Member 12621273 Ответов: 1

Как получить доступ ко второму элементу пары, вложенному в другую пару в stl?


У меня есть такой вектор :
вектор & lt; пара < int, пара < int,int > > v
Я хочу получить доступ ко всем трем элементам . Как я могу сделать это через итератор?

Что я уже пробовал:

Я искал возможные ответы в интернете, но не смог получить ни одного удовлетворительного ответа. Я попробовал итератор вот так :
вектор & lt; пара < int, пара < int,int> > v;
вектор &ЛТ; пара &ЛТ; инт пара &ЛТ;инт инт&ГТ; &ГТ; &ГТ; :: итератор IT=В. начать();
cout< & lt; it - & gt;первый- & gt;Второй;
Это не работает

CPallini

Насколько мне известно ваше заявление о в недопустимый.

Member 12621273

теперь я его исправил

Philippe Mori

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

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вектор принимает только один тип в своей реализации, поэтому вы не можете иметь <int, pair>. Вам нужно создать новый класс или использовать пару, которая также содержит пару; что-то вроде:

vector<pair<int, pair<int, int > > > v;
pair<int, int> p;
pair<int, pair< int, int> > q;
p.first = 1;
p.second = 2;
q.first = 1;
q.second = p;
v.push_back(q);

p.first = 3;
p.second = 4;
q.first = 2;
q.second = p;
v.push_back(q);
for (vector<pair<int, pair<int, int > > >::iterator it = v.begin(); it < v.end(); ++it)
{
    q = *it;
    int num = q.first;
    p = q.second;
    cout << num << " : " << p.first << " - " << p.second << endl;
}


Member 12621273

Теперь я его исправил

Richard MacCutchan

Так это работает или у вас все еще есть проблема?

Member 12621273

у меня еще есть такая же проблема

Richard MacCutchan

См. обновленное решение.