什么将从cd :: set.end()完全在c ++中返回?

时间:2017-03-08 01:46:52

标签: c++ stl

当您引用cppreference时,您会发现:

  

返回元素的最后一个元素后面的元素的迭代器   容器。该元素充当占位符;试图访问它   导致未定义的行为。

然后我运行以下代码:

std::set<int> s {1, 2, 3};
cout << *s.end() << endl;

输出结果是: 3 ,为什么?

1 个答案:

答案 0 :(得分:6)

  

std :: set.end()将在c ++中完全返回什么?

它返回:

  

容器最后一个元素后面元素的迭代器。

请注意:

  

此元素充当占位符;尝试访问它会导致未定义的行为。

  

输出是:3,为什么?

由于:

  

尝试访问它会导致未定义的行为。

所以它可以做你的编译器做的任何事情,返回3是一种任何东西,你的编译器显然觉得这样做。