如何将向量迭代器转换为int值以进行打印?

问题描述

运行此代码时,我不断收到错误消息。我一直在寻找类似错误解决方案,但是作为一个初级程序员,我无法理解旨在用于不同代码解决方案。 这是我的代码。请给我一个演示解决方案。

#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;

int main() {
        vector <int> listed_elements {10,6,11};
        auto min_value = min_element(listed_elements.begin(),listed_elements.end()); 
        cout << "The smallest element on the list is: ";
        cout << min_value << endl;

        return 0;
        }

解决方法

迭代器模仿指针。您可以取消引用迭代器以获取元素:

cout << *min_value << endl;

请注意,在一般算法中,通常会返回end(作为第二个参数传递的迭代器),以表明未找到任何元素,然后需要在之前检查是否具有有效的迭代器>取消引用:

if (min_value != listed_elements.end()) {
    std::cout << *min_value << std::endl;
}

但是,std::min_element返回结束迭代器的唯一情况是范围为空,因此,如果您绝对确定不是这种情况,则可以删除该支票(但只有这样!)