C ++:是否可以在向量/容器中搜索特定的字符串/值并返回其索引?

时间:2011-03-01 18:33:02

标签: c++ sorting vector

我很感激有关操纵矢量数据的一些建议。

我编写的代码导致了两组向量:字符串(标签/名称)和双精度(数据)。对于每次计算,字符串向量中的标签顺序可能不同。

这就是我想做的事情。假设向量中的一个元素(标签)是:Tom。我想知道是否可以在字符串/标签向量中搜索“Tom”,并在向量中返回Tom的位置索引。

这在C ++中听起来有可能吗?我会很感激任何提示。感谢。

3 个答案:

答案 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。你说你有两个向量?大概你想要保持它们的顺序,这意味着只排序字符串会很糟糕。您可能需要一个具有字符串和值的容器类 - 可以对其进行排序