第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 C++ 中設(shè)置 py::dict 的值?

如何在 C++ 中設(shè)置 py::dict 的值?

慕娘9325324 2023-04-18 11:04:06
我想使用py::dict來(lái)自 C++ 的 a 。但operator[]似乎沒(méi)有定義,我在這里或 pybind11 文檔中找不到有關(guān)如何添加鍵/值對(duì)或返回鍵值的任何信息?編輯:也許也很重要的一點(diǎn)是我有整數(shù)作為鍵。edit2:需要使用py::int_()
查看完整描述

2 回答

?
qq_花開(kāi)花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

我看到operator[]定義為py::dict,例如:


m.def("test", [](){

    py::dict d;

    d[py::int_{0}] = "foo";

    return d;

});

>>> example.test()

{10: 'foo'}


查看完整回答
反對(duì) 回復(fù) 2023-04-18
?
海綿寶寶撒

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以看到 operator[] 有兩個(gè)重載采用 a py::handleor string literal, sod["xxx"]或d[py::int_{0}]work 而不是 d[0] (在編譯時(shí)會(huì)被錯(cuò)誤地解析為無(wú)效的字符串文字,并會(huì)導(dǎo)致運(yùn)行時(shí)段錯(cuò)誤)


template <typename Derived>

class object_api : public pyobject_tag {

...

    /** \rst

        Return an internal functor to invoke the object's sequence protocol. Casting

        the returned ``detail::item_accessor`` instance to a `handle` or `object`

        subclass causes a corresponding call to ``__getitem__``. Assigning a `handle`

        or `object` subclass causes a call to ``__setitem__``.

    \endrst */

    item_accessor operator[](handle key) const;

    /// See above (the only difference is that they key is provided as a string literal)

    item_accessor operator[](const char *key) const;

你也不能使用 std::string 作為鍵:


std::string key="xxx";

d[key] = 1;  // failed to compile, must change to d[pybind11::str(key)]

為了使事情更簡(jiǎn)單,使用 pybind11::cast() 將任何支持的 C++ 類型顯式轉(zhuǎn)換為相應(yīng)的 python 類型,如下所示:


std::string key="xxx";

d[pybind11::cast(1)] = 2

d[pybind11::cast(key)] = 3


查看完整回答
反對(duì) 回復(fù) 2023-04-18
  • 2 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)