Как повторить std:: set?


у меня есть этот код:

std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it)
{
    u_long f = it; // error here
}

нет ->first значение. Как я могу получить значение?

4 61

4 ответа:

вы должны разыменовать итератор, чтобы получить член свой набор.

std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it)
{
    u_long f = *it; // Note the "*" here
}

Если у вас есть функции C++11, вы можете использовать диапазон на основе цикла:

for(auto f : SERVER_IPS) {
  // use f here
}    

просто использовать * до it:

  set<unsigned long>::iterator it;
  for (it = myset.begin(); it != myset.end(); ++it) {
      cout << *it;
  }

это разыменовывает его и позволяет получить доступ к элементу итератор в настоящее время.

еще один пример для стандарта C++11:

set<int> data;
data.insert(4);
data.insert(5);

for (const int &number : data)
  cout << number;

Это полное решение вопроса:

как вы повторяете std:: set?

int main(int argc,char *argv[]) 
{
    std::set<int> mset;
    mset.insert(1); 
    mset.insert(2);
    mset.insert(3);

    for ( auto it = mset.begin(); it != mset.end(); it++ )
        std::cout << *it;
}