C++ 如何将向量迭代器转换为int值以打印它?

C++ 如何将向量迭代器转换为int值以打印它?,c++,C++,运行此代码时,我不断遇到错误。我一直在寻找类似错误的解决方案,但作为一名初级程序员,我无法理解针对不同代码的解决方案。 这是我的密码。请给我一个演示的解决方案 #include <iostream> #include <vector> #include <numeric> #include <algorithm> using namespace std; int main() { vector <int> listed

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

#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;
        }
#包括
#包括
#包括
#包括
使用名称空间std;
int main(){
向量列_元素{10,6,11};
自动最小值=最小元素(列出的元素.begin(),列出的元素.end());

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

cout << *min_value << endl;

但是,
std::min_element
返回结束迭代器的唯一情况是当范围为空时,因此如果您完全确定情况并非如此,则可以放弃该检查(但只有在该情况下!).

我怀疑问题在于您一直在搜索转换,而这不是您想要做的。请检查。如果您想要迭代器引用的值,请使用
*min\u value
(检查
min\u value!=列出的元素。end()
,以避免未定义的行为)如果要转换为索引(其中
0
对应于第一个元素),请执行
std::distance(列出的元素。begin(),最小值)
@Peter
std::min\u元素
从不返回
结束
是吗?无论如何,我会在答案中添加注释…@Peter如果范围为empty@idclev463035818-确实如此。在这种情况下,另一个测试是向量不是空的。
if (min_value != listed_elements.end()) {
    std::cout << *min_value << std::endl;
}