#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)>