我很感激有关操纵矢量数据的一些建议。
我编写的代码导致了两组向量:字符串(标签/名称)和双精度(数据)。对于每次计算,字符串向量中的标签顺序可能不同。
这就是我想做的事情。假设向量中的一个元素(标签)是:Tom。我想知道是否可以在字符串/标签向量中搜索“Tom”,并在向量中返回Tom的位置索引。
这在C ++中听起来有可能吗?我会很感激任何提示。感谢。
答案 0 :(得分:7)
您应该使用std::map
。
答案 1 :(得分:7)
使用std::find
vector<string>::iterator it = std::find(vec.begin(), vec.end(), "Tom");
if (it == vec.end())
return -1;
else
return it - vec.begin();
更好的解决方案是选择一个更合适的容器,例如提到的std::map
答案 2 :(得分:1)
正如vissi所说 - 你真的想要一个关联数组
如果必须使用向量,可以对向量进行排序,然后使用std :: find函数之一返回迭代器,即指向位置的指针。
PS。你说你有两个向量?大概你想要保持它们的顺序,这意味着只排序字符串会很糟糕。您可能需要一个具有字符串和值的容器类 - 可以对其进行排序