gpt4 book ai didi

c++ - 如何显示集合中的某个项目 C++

转载 作者:行者123 更新时间:2023-11-30 05:02:52 24 4
gpt4 key购买 nike

我有一组,比方说set<string>tmpSet .我有一些元素,例如 10 , 但我不知道它们是什么,因为我已经通过 set_intersection 设置了这个另外两套。例如,我可以只显示 first, third and eighth 吗?集合中的元素?

最佳答案

是的。

std::set<std::string> tmpSet = ...; // Create your set somehow.
// Get an iterator to the first (smallest) item in the set.
std::set<std::string>::iterator setStartIt = tmpSet.begin();
// Dereference the iterator to obtain a reference to the first element.
std::string& firstItem = *setStart;
// Get an iterator for the third element (this is two after the first!).
auto thirdItemIt = std::next(setStartIt, 2);
std::string& thirdItem = *thirdItemIt;
// Get the tenth item.
std::string& tenthItem = *std::next(setStartIt, 9);

请注意,您还可以使用 std::advance()(它修改您传递的迭代器而不是返回一个新的迭代器。另请记住,这不是高效的:由于 std::set 迭代器不是 RandomAccessIterator,因此 std::next 的复杂性和 std::advance 是线性的(所以需要 10 次操作才能得到第 10 项)。

如果你想查看所有元素,循环遍历它们当然是正确的方法:

for (auto it = tmpSet.begin(); it != tempSet.end(); ++it) {
std::string currentElement = *it;
...
}

或者,使用基于范围的 for 循环:

for (auto& currentElement : tmpSet)
...

关于c++ - 如何显示集合中的某个项目 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652220/

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