当前位置:  开发笔记 > 编程语言 > 正文

使用STL在Vector中的位置

如何解决《使用STL在Vector中的位置》经验,为你挑选了3个好方法。



1> Konrad Rudol..:

min_element已经为你提供了迭代器,不需要调用find(另外,它的效率很低,因为它是工作的两倍).使用distance-运营商:

cout << "min value at " << min_element(v2.begin(), v2.end()) - v2.begin();


@ prakharsingh95因为你正在使用大写锁(因为你没有仔细阅读我的答案 - 试试`std :: distance`).

2> Luc Touraill..:

您正在使用的两种算法都返回迭代器.如果取消引用迭代器,则会获得此迭代器"指向"的对象,这就是为什么在执行时打印而不是位置的原因

cout << "min value at position " << *find(v2.begin(), v2.end(), value);

迭代器可以看作是一个指针(好吧,不完全是,但为了简单起见,我们这样说); 因此,单独的迭代器不能给你容器中的位置.由于你正在迭代一个向量,你可以使用减号运算符,正如Konrad所说:

cout << "min value at " << min_element(v2.begin(), v2.end()) - v2.begin();

但我建议使用std :: distance算法,它更灵活,适用于所有标准容器:

cout << "min value at " << distance(v2.begin(), min_element(v2.begin(), v2.end()));



3> Johann Gerel..:

简单回答你认为你问的问题"如何确定std::vector<>给定迭代器的位置?" 是功能std::distance.

但是,您可能要做的是获取迭代器的值,您可以通过取消引用它来获取它:

using namespace std;
vector::const_iterator it = min_element(v2.begin(), v2.end());
cout << "min value at position " << distance(v2.begin(), it) << " is " << *it;

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有