Вызов каждого вектора в вектор<вектор<пара>>>

#c

Вопрос:

У меня есть набор значений, сохраненных в:

 vector<vector<pair<int, int>>> subsets
 

Если бы я хотел вывести значения из каждого вектора внутри вектора. Как бы я это сделал?
вектор<пара<int, int><int, int>> будет в формате <int, int>><(1, 2) (2, 3) (5,0)>

 vector<pair<int, int>> = <(1, 2) (2, 3) (5,0)>
 

подмножества будут содержать несколько наборов векторов

 [1] <(1, 2) (2, 3) (5,0)>
[2] <(1, 2) (4, 8) > 
[3] <(0, 1) (5, 5) (1, 1)> 
etc...
 

Если у кого-то есть предложения сделать это по-другому, пожалуйста, поделитесь ими! Структуры данных в C для меня немного загадочны.

Редактировать: Я смог перейти к векторной<паре<int, int><int, int>>, вызвав первую и вторую пары.

 for (pair<int, int> p : items)
        cout << "(" << p.first << ", " << p.second << ") ";
 

Векторы внутри вектора, похоже, не распознаются subset.at(0) позвоните.

Комментарии:

1. что вы пытались сделать и как это не удалось? Знаете ли вы, как перебирать элементы вектора? Знаете ли вы, как печатать элементы пары?

2.может быть, это становится менее загадочным, когда вы читаете некоторую документацию: en.cppreference.com/w/cpp/container/vector en.cppreference.com/w/cpp/utility/pair

Ответ №1:

Вот один из примеров:

 #include <iostream>
#include <vector>
#include <utility>

int main() {
    std::vector<std::vector<std::pair<int, int>>> subsets{
        {{1, 2}, {2, 3}, {5,0}},
        {{1, 2}, {4, 8}}, 
        {{0, 1}, {5, 5}, {1, 1}}
    };

    for(autoamp; inner : subsets) {    // loop over the outer vector
        auto it = inner.begin();    // get iterator for the inner vector

        std::cout << '<';
        if(it != inner.end()) {

            // print the first pair
            std::cout << '(' << it->first << ',' << it->second << ')';

            // print the rest of the pairs
            for(  it; it != inner.end();   it) {
                std::cout << " (" << it->first << ',' << it->second << ')';
            }
        }
        std::cout << ">n";
    }
}
 

Выход:

 <(1,2) (2,3) (5,0)>
<(1,2) (4,8)>
<(0,1) (5,5) (1,1)>