Как распечатать значения в мультимножестве? - PullRequest
1 голос
/ 17 июля 2011

Как получить доступ к значениям, хранящимся в структуре данных multiset, C ++?

for (int i = 0; i < mlt.size; i++)
{
cout << mlt[i];
}

Ответы [ 4 ]

4 голосов
/ 17 июля 2011

Если T - это тип, содержащийся в вашем мультимножестве,

for (std::multiset<T>::const_iterator i(mlt.begin()), end(mlt.end());
     i != end;
     ++i)
    std::cout << *i << "\n";
4 голосов
/ 17 июля 2011

Посмотрите на этот пример: http://www.cplusplus.com/reference/stl/multiset/begin/

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

2 голосов
/ 17 июля 2011

Вы должны , а не (обычно) сделать это, написав цикл.Обычно вы должны использовать заранее написанный алгоритм, такой как std::copy:

std::copy(mlt.begin(), mlt.end(), 
          std::ostream_iterator<T>(std::cout, "\n"));

В зависимости от ситуации, может быть несколько вариантов, которые могут быть полезными, например, использование infix_ostream_iterator, которое я опубликовалв предыдущем ответе .Это полезно в первую очередь, когда вы хотите разделить элементы в списке, чтобы получить (например) 1,2,3,4,5, а не 1,2,3,4,5,, который получит ostream_iterator.

1 голос
/ 24 июня 2016

auto для C ++ 11 - удобство.

   for(auto t : mlt){
        cout << t << endl;
    }
...