用 C++ 编写的代码
环境:微软Visual Studio
我有一个地图矢量。首先,我想遍历第一个映射,获取它的“第一个”和“第二个”并将它们保存在我构建的其他结构中(向量映射)。然后我将遍历我的“地图矢量”中的左侧地图并做同样的事情......
这是我的地图矢量:
typedef vector<map<string,unsigned int>> myvec;
这是应该完成工作的函数:
void Coogle::make_index(const myvec& the_vec)
{
//SCAN THE FIRST MAP
map<string,unsigned int>::iterator map_iter;
index::iterator idx_iter = the_index.begin();
for(map_iter=the_vec[0].begin(); map_iter!=the_vec[0].end(); ++map_iter)
{
}
}
'for' 循环应该遍历向量中的第一个映射。我声明了一个地图迭代器,因为我需要它来遍历地图!正确的?为什么它不起作用?
错误:
IntelliSense:没有运算符“=”与这些操作数匹配
非常感谢 !!!
好的,现在我确定了这个迭代器:
index::iterator idx_iter = the_index.begin();
这是我的“索引”:
typedef map<string,vector<unsigned int>> index;
在提到的“for”循环中,我执行了以下操作:
for(map_iter=the_vec[0].begin(); map_iter!=the_vec[0].end(); ++map_iter)
{
/*#1*/ idx_iter->first = map_iter->first;
/*#2*/ idx_iter->second[0] = map_iter->second;
/*#3*/ idx_iter++;
}
#2似乎还可以。但是#1会产生错误:
IntelliSense:没有运算符“=”与这些操作数匹配
它和之前的错误一样,所以我猜这是一个类似的问题。是吗?
编辑:更清楚地说,我想做的是将const myvec& the_vec添加到我的索引的“i”位置(在本例中为“0”)。
再次 :
typedef vector<map<string,unsigned int>> myvec;
typedef map<string,vector<unsigned int>> index;
谢谢!