gpt4 book ai didi

c++ - 遍历 std::set 中包含的所有三重不同值?

转载 作者:行者123 更新时间:2023-11-28 04:34:02 30 4
gpt4 key购买 nike

假设我有一个没有重复值的排序 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com