Wondeirng为什么下面的代码返回1?我从不将1插入multiset容器中。

#include <iostream>
#include <set>

int main ()
{
  std::multiset<int> mymultiset;
  std::multiset<int>::iterator itlow;

  mymultiset.insert(-3);
  itlow = mymultiset.lower_bound (3);
  std::cout << *itlow << endl; // output 1

  return 0;
}

最佳答案

mymultiset.lower_bound(3)返回3可以到达的容器中的最低位置,该位置在容器的末尾。因此itlow等于mymultiset.end(),并且不可取消引用。 std::cout << *itlow具有未定义的行为。

关于c++ - C++多重集lower_bound的意外输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46144621/

10-13 00:00