我对如何获取集合中的元素感到困惑。我想我必须使用迭代器,但我该如何逐步完成它?
问问题
66270 次
6 回答
19
替换type
为,例如,int
.. 并替换var
为集合的名称
for (set<type>::iterator i = var.begin(); i != var.end(); i++) {
type element = *i;
}
最好的方法是使用boost::foreach。上面的代码将简单地变成:
BOOST_FOREACH(type element, var) {
/* Here you can use var */
}
您也#define foreach BOOST_FOREACH
可以这样做:
foreach(type element, var) {
/* Here you can use var */
}
例如:
foreach(int i, name_of_set) {
cout << i;
}
于 2009-12-23T19:08:31.577 回答
6
使用迭代器:
std::set<int> si;
/* ... */
for(std::set<int>::iterator it=si.begin(); it!=si.end(); ++it)
std::cout << *it << std::endl;
请注意,MSDN 和 cplusplus.com 等许多参考资料都提供了示例 -一个示例。;)
于 2009-12-23T19:07:44.530 回答
3
要列出集合中的所有元素,您可以执行以下操作:
#include <iostream>
#include <set>
using namespace std;
int main ()
{
int myints[] = {1,2,3,4,5};
set<int> myset (myints,myints+5);
set<int>::iterator it;
cout << "myset contains:";
for ( it=myset.begin() ; it != myset.end(); it++ )
cout << " " << *it;
cout << endl;
return 0;
}
要检查集合中的特定元素是否存在,您可以使用集合 STL 类中的 find() 方法
于 2009-12-23T19:12:06.980 回答
3
对于 C++11 和更新版本:
std::set<int> my_set;
for (auto item : my_set)
std::cout << item << endl;
于 2016-09-23T09:23:22.310 回答
2
我喜欢使用 C++0x lambda 语法在 VS2010 Beta2 中看到的内容:
std::for_each( s.begin(), s.end(),
[](int value)
{
// what would be in a function operator() goes here.
std::cout << value << std::endl;
} );
于 2009-12-24T06:31:36.423 回答
0
set<int> os;
for (auto itr = os.begin(); itr != os.end() ; ++itr) cout << *itr << endl;
于 2015-12-03T03:42:50.760 回答