在对向量中查找元素的索引
Find index of element in vector of pairs
如标题中所述,我正在尝试在对向量中找到元素的索引。我有以下向量:std::vector<std::pair<std::string, double>> dict
. 我的字典内容是:
Name1 11
Name2 9
Name3 10
Name4 12
Name5 13
为了找到索引,我所拥有的只是pair
的first
属性。例如,我有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; }));
相关文章:
- 在对向量中查找元素的索引
- 当该数组的索引中没有元素时,指针指向什么?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 如何在C++中递归地找到max元素的索引?
- 编译器(Visual C++)如何优化按索引访问矢量元素?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 使用推力根据索引更改某些元素的值
- 为什么 min_element() 返回最小元素的索引,而不是迭代器?
- CPtrList - 如何获取元素的索引?
- 获取结构 c++ 中元素的索引
- C++ STL 数据结构常时按索引推送/弹出/随机访问,并具有指向元素的可靠指针
- 矢量指针索引处的读取元素
- C++函数返回两个 char 数组的相同索引元素
- 特征:类似 numpy 的元素索引
- 如何在另一个数组中找到一个未排序数组的不同元素索引?
- C 无法使用嵌套环将数组的元素索引
- Opencv Mat的元素索引产生垃圾
- 在c++中,当元组的元素索引在运行时已知时,是否有可能获得该元素的类型?
- 按内容访问QVector元素索引
- C++ 矢量元素索引