我需要帮助弄清楚为什么当我运行此代码时会打印出来
(8,8)(8,8)(0,8)(7,8)(6,8)(5,8)(4,8)(3,8)(1,8)(0,8) (8,8)在屏幕上。
我不明白增量和减量运算符如何处理函数u
中的迭代器v
和g
。
我知道这个集合将有0,1,3,4,5,6,7,8个元素。但是我不明白如何“走”穿过这个集合。
template <typename T>
std::complex<double> g(T &u, T &v) { return {*--u, *v++}; }
std::set<int> s{3, 8, 4, 7, 0, 1, 1, 5, 7, 3, 6};
std::set<int>::iterator v(s.begin()), w(s.end());
while (v != w) std::cout << g(v, w) << " ";
std::cout << std::endl;
答案 0 :(得分:2)
您正在递减s.begin()
并递增s.end()
。两者都会导致未定义的行为。