gpt4 book ai didi

c++ - 如何迭代打印 SET (STL) 中的元素

转载 作者:搜寻专家 更新时间:2023-10-31 00:34:55 25 4
gpt4 key购买 nike

这是我的代码。它是正确的。

set<float> set1;
set1.insert(1);
set1.insert(2);
set1.insert(3);

set<float>::iterator it1;
for (it1 = set1.begin(); it1 != set1.end(); it1 ++)
{
cout << *it1 <<" ";
}

但为什么下面的代码不起作用?

    set<float> set1;
set1.insert(1);
set1.insert(2);
set1.insert(3);

set<float>::iterator it1;
for (it1 = set1.begin(); it1 != set1.end()-1; it1 ++)
{
cout << *it1 <<" ";
}

最佳答案

std::set 的迭代器是bidirectional .这意味着它们支持任一方向的单步( it++it-- 等),但不支持任意长度的增量( it + N 等)。

这可能是因为这将是一个低效的 O(N) 操作,因为 std::set通常实现为自平衡二叉搜索树。

您可以使用 std::advance 将双向迭代器递增/递减任意数量, std::nextstd::prev :

std::advance(it, 42);
it = std::next(it, 42);
it = std::prev(it, 42);

关于c++ - 如何迭代打印 SET (STL) 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102509/

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