传染媒介c ++传染媒介与differents类型的

时间:2015-04-03 14:01:03

标签: c++ vector

如何使用不同类型的变量声明和推回向量的二维向量。矢量是一种好方法(使用数组是否更好)?

我的变量是这样的:

int id;
string name;
int start;
int end;

我想获得一份清单: ((id1 name1 start1 end1),(id2 name2 start2 end2)...

对不起这个基本问题,但我曾经使用python,允许这样做。 感谢

2 个答案:

答案 0 :(得分:6)

您不需要2D数组,您需要一组记录。像这样:

struct Record
{
  int id;
  std::string name;
  int start;
  int end;
};

std::vector<Record> records;

答案 1 :(得分:3)

您还可以使用std::tuple(C ++ 11)将元组推送到向量

#include <iostream>
#include <tuple>
#include <string>
#include <vector>

int main()
{
    using record = std::tuple<int, std::string, int, int>;
    std::vector<record> v;
    v.emplace_back(1, "test1", 2, 3);
    v.emplace_back(10, "test2", 20, 30);

    for(auto&& elem: v) // display the elements
    {
        std::cout << std::get<0>(elem) << " ";
        std::cout << std::get<1>(elem) << " ";
        std::cout << std::get<2>(elem) << " ";
        std::cout << std::get<3>(elem) << std::endl;
    }
}