有了一个载体,我可以做到以下几点:访问集合中的元素?
vector<int> myvec (4,100);
int first = myvec.at(0);
我有以下设置:
set<int> myset;
myset.insert(100);
int setint = ????
我如何访问我在集合插入的元素?
有了一个载体,我可以做到以下几点:访问集合中的元素?
vector<int> myvec (4,100);
int first = myvec.at(0);
我有以下设置:
set<int> myset;
myset.insert(100);
int setint = ????
我如何访问我在集合插入的元素?
set<int>::iterator iter = myset.find(100);
if (iter != myset.end())
{
int setint = *iter;
}
在取消引用该迭代器之前,您应该检查'iter!= myset.end()'。 – 2010-03-29 20:19:10
如果你知道你在寻找100,为什么不把100赋给'setint'? – wilhelmtell 2010-03-29 20:19:30
与'vector'情况下的等价物是'vecint = * find(myvec.begin(),myvec.end(),100);' – wilhelmtell 2010-03-29 20:21:13
您无法按索引访问设置的元素。您必须使用迭代器访问元素。
set<int> myset;
myset.insert(100);
int setint = *myset.begin();
如果您想要的元素不是第一个元素,则将迭代器推进到该元素。您可以使用set<>::find()
查看集合以查看元素是否存在,或者您可以迭代该集合以查看存在哪些元素。
只有当你从组。 – UncleBens 2010-03-29 20:39:23
啊,对不起。插入一个集合不会使旧的迭代器无效,并且擦除元素也不会使旧的迭代器无效(当然除了指向元素的迭代器被删除)。 – wilhelmtell 2010-03-29 20:51:47
您也可以使用这种方法:
set<int>:: iterator it;
for(it = s.begin(); it!=s.end(); ++it){
int ans = *it;
cout << ans << endl;
}
哪些元素?为了什么目的? – GManNickG 2010-03-29 20:23:10