我想在C ++中创建类似python字典的东西

时间:2016-01-30 02:12:43

标签: python c++

我正在使用结构。有没有办法迭代所有“数字”类型的项目?

struct number { int value; string name; };

3 个答案:

答案 0 :(得分:2)

根据我的理解,您希望使用value访问namenumber。你可以去array of structure喜欢 number n[5];其中n[0],n[1],...n[4] 但是我们在c ++中有一些额外的功能可以通过预定义的map, set实现这一功能 你可以找到很多地图的例子

答案 1 :(得分:2)

在c ++地图中像python字典一样工作,但两种语言有一个基本的区别。 C ++是打字的,python有鸭子打字。 C ++ Map是键入的,它不能接受像python词典那样的任何类型的(键,值)。 一个示例代码,使其更清晰 -

  map<int, char> mymap;
  mymap[1] = 'a';
  mymap[4] = 'b';
  cout<<"my map is -"<<mymap[1]<<" "<<mymap[4]<<endl;

你可以使用技巧来制作一个可以接受任何类型键的地图,参考 - http://www.cplusplus.com/forum/general/14982/

答案 2 :(得分:0)

您可以使用=SUM(SUMIFS($B:$B,$A:$A,">="&DATE(2016,1,1),$A:$A,"<="&DATE(2016,1,31),$C:$C,{"Apple","Banana","Orange"})*{0.5,0.75,1.25}) (或std::map

unordered_map

编译并运行:

     //  Key  Value Types.
std::map<int, std::string> data {{1, "Test"}, {2, "Plop"}, {3, "Kill"}, {4, "Beep"}};

for(auto item: data) {
                 // Key                  Value
    std::cout << item.first << " : " << item.second << "\n";
}

> g++ -std=c++14 test.cpp > ./a.out 1 : Test 2 : Plop 3 : Kill 4 : Beep std::map之间的区别在于std::unordered_map std::map项目按Key排序,而std::unordered_map中的值未排序(因此它们将以看似随机的顺序打印。)

在内部,他们使用截然不同的结构,但我相信你对这个细节不感兴趣。