访问集合中的元素?

mr.*_*bio 15 c++ set

使用矢量,我可以执行以下操作:

vector<int> myvec (4,100);
int first = myvec.at(0);
Run Code Online (Sandbox Code Playgroud)

我有以下几套:

set<int> myset;
myset.insert(100);
int setint = ????
Run Code Online (Sandbox Code Playgroud)

如何访问我在集合中插入的元素?

Mic*_*fik 14

set<int>::iterator iter = myset.find(100);
if (iter != myset.end())
{
    int setint = *iter;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果你知道你在寻找100,那为什么不把100分配给`setint`? (3认同)

wil*_*ell 12

您无法通过索引访问set元素.您必须使用迭代器访问元素.

set<int> myset;
myset.insert(100);
int setint = *myset.begin();
Run Code Online (Sandbox Code Playgroud)

如果您想要的元素不是第一个,那么将迭代器推进到该元素.您可以查看集合以查看元素是否存在,使用set<>::find(),或者您可以迭代集合以查看其中的元素.


小智 7

要访问特定索引,您可以使用以下命令:

int first = *next(myset.begin(),0);
int third = *next(myset.begin(),2);
Run Code Online (Sandbox Code Playgroud)

下一个函数将设置迭代器返回到该位置。通常,不使用此函数,因为它的性能是线性的。但是,如果集合足够小并且需要访问某些特定索引,则可以使用它来避免编写手动迭代循环。


Raf*_*san 6

您还可以使用这种方法:

 set<int>:: iterator it;
 for( it = s.begin(); it!=s.end(); ++it){
    int ans = *it;
    cout << ans << endl;
 }
Run Code Online (Sandbox Code Playgroud)