分配向量中元素的索引而不是其值

Assign the index of an element in a vector instead of its value

我试图找到一个元素在向量中的位置,然后将其分配给一个变量,但由于某种原因它不起作用。

这里我使用的是vector.at(),就像有人在这个网站上做同样的事情一样。然而,当我在我的例子中使用它时,它返回的是实际元素本身而不是位置。

这是我的循环。它旨在循环遍历向量以找到最高值并将其分配给变量(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]

实例:http://ideone.com/fp0T7i