c++ - 分配 vector 中元素的索引而不是其值

标签 c++ vector

我试图找到一个元素在 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 是我的 vector 。

最佳答案

您的循环在最后一次迭代时越界:

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

关于c++ - 分配 vector 中元素的索引而不是其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845479/

相关文章:

c++ - 逐行读取输入并转换为 vector 并打印

c++ - 我的 "if"语句中只有一个给出了准确的值,即使它们都是相同的结构

c++ - 在面向对象编程中分配新内存时处理代码中不同构造函数导致的错误

c++ - 仿射变换、简单旋转和缩放或其他完全?

r - 在 R 中获取数字序列的所有拆分

c++ - cpp- lower_bound 返回错误的迭代器

Python - 如何通过考虑所有组合来绘制二维图?

c++ - 获得对私有(private)成员的访问权限以在 C++ 中进行测试

java - 在 Java 中是否有与 C++ 中的 size_t 等效的东西?

c++ - matrix.size() 和 matrix[0].size() 有什么区别?