在对向量中查找元素的索引

Find index of element in vector of pairs

本文关键字:元素 索引 查找 向量      更新时间:2023-10-16

如标题中所述,我正在尝试在对向量中找到元素的索引。我有以下向量:std::vector<std::pair<std::string, double>> dict. 我的字典内容是:

Name1 11
Name2 9
Name3 10
Name4 12
Name5 13

为了找到索引,我所拥有的只是pairfirst属性。例如,我有Name5,我想找到 4。(因为Name5是第五个元素(。 有人知道如何做到这一点吗? 我尝试了一些东西,但它似乎不起作用:

auto it = std::find(dict.begin(), dict.end(), movieName);

movieName是一个里面有"Name5"std::string。 谢谢!

您可以使用谓词来决定向量中的哪些条目应匹配。 使用 lambda 最容易做到这一点:

auto it = std::find_if(dict.begin(), dict.end(),
[&](const auto& pair) { return pair.first == movieName; });

拥有迭代器后,将其与dict.end()进行比较以查看是否有任何匹配项,如果有匹配项,您可以使用 std::d istance(( 将其转换为向量的索引,正如 d4rk4ng31 在问题下评论的那样。

我只会使用正常的for_each循环。

所以:

int index = 0;
for(const auto& pair : dict) {
if(pair.first == <whatever>) {
break;
}
index++;
}
//if index == dict.size() then print element not found 

另一种方法是使用 std::find_if(( ( 感谢 @Tony Delroy :) (

auto index = std::distance(dict.begin(), std::find_if(dict.begin(), dict.end(), [&](const auto& pair) { return pair.first == movieName; }));