【发布时间】:2015-01-14 12:45:55
【问题描述】:
我想要一个向量元组,例如 {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;
}
如何打印我的地图以及如何访问其中的元组?
编辑:我知道如何遍历地图,但不知道如何打印向量元组。
【问题讨论】:
-
既然它们都是同一种类型,为什么不用一个 array 向量呢?它比元组更容易使用。
-
...这个成员函数将通过索引访问一个元组:cplusplus.com/reference/map/map/operator[]。要访问第一个元组,*(m.begin())。
-
谢谢。我已经知道如何遍历地图。更大的问题是如何打印向量元组。我发现打印元组的所有内容都是元组,如 tuple
或类似的。 -
@Jette 好吧,没有自动方法来打印向量元组,如果那是你所追求的(就像没有自动打印向量一样,或元组)。您必须自己打印它们 - 可能依次访问元组的每个元素并以您需要的任何方式打印向量。