我是一名C ++初学者,试图声明并使用地图,但是尽管检查了教程和类似的问题,我还没有设法让它编译。
这是一个最小的例子,也在ideone中。
#include <iostream>
#include <bits/stl_map.h>
#include <string>
using namespace std;
int main() {
// error: ‘_Rb_tree’ does not name a type
map<string, string> dictionary;
// dictionary["value 1"] = "value 2";
// dictionary.insert(pair<string, string>("value 3", "value 4"));
// dictionary.insert(make_pair("value 5", "value 6"));
return 0;
}
下一个问题是插入数据,我已经看到了三种方法,如上面的评论中所述。我应该选择哪一个?那些方式都是等价的吗?
答案 0 :(得分:4)
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
map<string, string> dictionary;
dictionary["value 1"] = "value 2";
dictionary.insert(pair<string, string>("value 3", "value 4"));
dictionary.insert(make_pair("value 5", "value 6"));
return 0;
}
对我来说很好,你需要包含地图标题。它也找不到#include“bits / stl_map.h”。我不确定这是否属于您的本地档案。
答案 1 :(得分:0)
我个人更喜欢第二个。它有点笨重,但很清楚你在做什么。
如果我是你,我不会担心性能上的差异,你可以随时对它进行基准测试,但最终这些事情不能成功或破坏你的代码。
请参阅http://www.cplusplus.com/reference/map/map/operator[]
所以,选择你认为最清楚/方便的任何一个!