C++ 如何打印和(访问)矢量元组(在地图中)

C++ How to print and (access) tuples of vectors (in a map)?

本文关键字:元组 地图 何打印 打印 C++ 访问      更新时间:2023-10-16

我想要一个向量元组,类似于{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;
}

如何打印地图以及如何访问其中的元组?

编辑:我知道如何循环浏览地图,但不知道如何打印矢量元组。

如果您使用的是 C++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);
}