12

セット内の要素を取得する方法について混乱しています。イテレータを使用する必要があると思いますが、どのようにステップスルーしますか?

4

6 に答える 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;
}

セット内の特定の要素かどうかを確認するには、set 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 ラムダ構文を使用して 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 に答える