如何迭代(键,值)boost :: python:dict [英] How iterate (key, value) boost::python:dict

查看:88
本文介绍了如何迭代(键,值)boost :: python:dict的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在 boost :: python:dict 中在 C ++ 中进行迭代?在每个循环中我都需要 key value .

How can I iterate in C++ over my boost::python:dict ? I need key and value in every loop round.

我的尝试是这样的:

for (auto x : MyBoostPythonDict.iteritems())
{
    // determine key
    // determine value 
    // ...
}

我收到此错误: C3312找不到类型为'boost :: python :: api :: object'的可调用'end'函数

推荐答案

您可以按如下所示简单地遍历所有键/值对:

You can simply loop over all key/value pairs as follows:

using namespace boost::python;

list items = MyBoostPythonDict.items();
for(ssize_t i = 0; i < len(items); ++i) {
    object key = items[i][0];
    object value = items[i][1];
    // ...
}

现在,您需要从 key value 中提取相应的类型.假设两者均为 int 类型,您将使用:

Now you need to extract the corresponding types from key and value. Assuming both are of type int you would use:

extract<int> key_int(key);
extract<int> value_int(value);

if (key_int.check() && value_int.check()) {
    cout << key_int << ": " << value_int << endl;
}

这篇关于如何迭代(键,值)boost :: python:dict的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆