gpt4 book ai didi

c++ - 如何在C++中获取集合的第一个元素

转载 作者:太空狗 更新时间:2023-10-29 21:12:26 31 4
gpt4 key购买 nike

我是 c++ 的新手,我已经声明了一组集合:

std::set< std::set<int> > return_moves;

并且还在其中推送了一些值。我想访问该集合的第一个元素,以便我可以计算该内部集合中的元素数量。我正在尝试通过

return_moves.begin().size()

我收到这个错误:

set_diff.cpp: In function ‘int main()’:
set_diff.cpp:62:47: error: ‘std::set<std::set<int> >::iterator {aka struct std::_Rb_tree_const_iterator<std::set<int> >}’ has no member named ‘size’

请帮助我纠正我的语法。

最佳答案

详细阐述 Ed 的评论,C++ 中的集合在默认情况下是弱排序的,因此迭代排序有一定的保证,但作为一个数学概念,集合中没有“顺序”,因此实现通常不允许获取“第一个”元素。

如果你只想获取任何元素,而不需要迭代你可以使用

auto someElementIterator = myset.begin()

它将返回一个指向某个元素的迭代器。要“弹出”它,您可以跟随它

myset.erase(someElementIterator)

您可以使用 *someElementIterator 获取元素。

关于您的错误:

迭代器在某种意义上就像一个指针,你需要 -> 不是。访问元素大小(而不是不存在的迭代器大小)。所以:

someElementIterator->size()

并且不是someElementIterator.size()

关于c++ - 如何在C++中获取集合的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47364500/

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