假设我有一个没有重复值的排序 vector 。如果我想遍历所有不同值的三元组,我会这样做:
for(std::size_t i = 0; i < data.size(); ++i)
for(std::size_t j = i+1; j < data.size(); ++j)
for(std::size_t k = j+1; k < data.size(); ++k)
do_somthing_with(data[i],data[j],data[k]);
如果我的容器是 std::set
,我该如何使用迭代器做到这一点?
注意:出于兼容性原因,我不使用 C++11。
最佳答案
你可以做与 vector 几乎相同的事情,但你需要创建一个包装函数,它将复制和递增集合迭代器:
std::set<int>::const_iterator next_iterator(std::set<int>::const_iterator it)
{
return ++it; // it has been passed by value, so already copied
}
//...
for (std::set<int>::const_iterator it = data.begin(); it != data.end(); ++it)
for(std::set<int>::const_iterator jt = next_iterator(it); jt != data.end(); ++jt)
for(std::set<int>::const_iterator kt = next_iterator(jt); kt != data.end(); ++kt)
// ...
关于c++ - 遍历 std::set 中包含的所有三重不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039573/