什么是迭代无序对元素的简洁方法unordered_set?
(所以顺序无关紧要,元素应该不同)
例如{1,2,3} =>(1,2)(2,3)(1,3)
我最初的尝试是类似的
for (i = 0; i < size - 1; i++) {
for (j = i + 1; j < size; j++) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是对于迭代器来说这并不是非常方便.
这应该有效,给出一个std::unordered_set s:
auto set_end = s.end();
for (auto ai = s.begin(); ai != set_end; ++ai) {
for (auto bi = std::next(ai); bi != set_end; ++bi) {
// *ai, *bi
}
}
Run Code Online (Sandbox Code Playgroud)
这基本上是整数中等效于以下的迭代器:
for (int i = 0; i < n; ++i) {
for (int j = i + 1; j < n; ++j) {
// i, j
}
}
Run Code Online (Sandbox Code Playgroud)