Я хочу иметь кортеж векторов, что-то вроде {1,2,3,4}, {5,6}, {7,8,9}. Причина, в которой я нуждаюсь в этом, - это то, что я знаю априори, сколько векторов мне нужно, но не так, как долго они будут. Поэтому я подумал, что это лучший способ сделать это. Кроме того, в конце я хочу сохранить их на карте, потому что мне нужно несколько из этих кортежей позже, и я могу получить к ним доступ по индексу.
Для начала я подумал о чем-то вроде:
#include <vector>
#include <tuple>
#include <iostream>
#include <map>
using namespace std;
typedef vector<int> VECTOR;
typedef tuple<VECTOR, VECTOR, VECTOR> TUPLE;
typedef map<int, TUPLE> MAP;
int main()
{
MAP m;
VECTOR v1, v2, v3;
TUPLE t;
v1 = { 1, 2, 3, 4 };
v2 = { 5, 6 };
v3 = { 7, 8, 9 };
t = make_tuple(v1, v2, v3);
m.insert(pair<int, TUPLE>(1, t));
return 0;
}
Как распечатать мою карту и как я могу получить доступ к кортежу в ней?
EDIT: Я знаю, как перемещаться по карте, но не как печатать кортеж векторов.
Если вы используете С++ 11, вы можете сделать следующее
for (auto element : m) // iterate over map elements
{
int key = element.first;
TUPLE const& t = element.second; // Here is your tuple
VECTOR const& v1 = std::get<0>(t); // Here are your vectors
VECTOR const& v2 = std::get<1>(t);
VECTOR const& v3 = std::get<2>(t);
}
const TUPLE& t = element.second;