我试图找到一个元素在 vector 中的位置,然后将其分配给一个变量,但由于某种原因它不起作用。
这里我使用的是 vector.at()
,就像有人在这个网站上做同样的事情一样。然而,当我在我的例子中使用它时,它返回的是实际元素本身而不是位置。
这是我的循环。它旨在循环遍历 vector 以找到最高值并将其分配给变量(this woks) max
并将其位置分配给变量 pos
但这不起作用.
for (int i = 0; i <= people.size(); ++i) {
if (people[i] > max) {
max = people[i];
pos = people.at(i);
}
}
people
是我的
最佳答案
您的循环在最后一次迭代时越界:
for (int i = 0; i <= people.size(); ++i)
^^
应该是:
for (int i = 0; i < people.size(); ++i)
其次,i
是最大元素的位置,不是people.at(i)
。
最后,std::max_element
已经为您完成了所有这些工作:
http://en.cppreference.com/w/cpp/algorithm/max_element
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> people = {5, 6,12, 3, 5, 9};
auto it = std::max_element(people.begin(), people.end());
std::cout << "largest element is " << *it << " at people[" << std::distance(people.begin(), it)
<< "]";
}
输出:
largest element is 12 at people[2]
关于c++ - 分配 vector 中元素的索引而不是其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845479/