如何用不同类型的变量声明和push_back矢量的矢量。是一种很好的方法(使用数组更好)吗?C++矢量与不同类型的矢量
我的变量是这样的:
int id;
string name;
int start;
int end;
,我想获得一个列表: ((ID1名1启动1 END1),(ID2名2 START2 END2)...
对不起这个基本问题,但我使用Python,它允许工作 感谢
如何用不同类型的变量声明和push_back矢量的矢量。是一种很好的方法(使用数组更好)吗?C++矢量与不同类型的矢量
我的变量是这样的:
int id;
string name;
int start;
int end;
,我想获得一个列表: ((ID1名1启动1 END1),(ID2名2 START2 END2)...
对不起这个基本问题,但我使用Python,它允许工作 感谢
你不想一个二维数组,你想要的记录数组事情是这样的:。
struct Record
{
int id;
std::string name;
int start;
int end;
};
std::vector<Record> records;
谢谢,但为什么我不需要2D数组?我想保存所有我的ID ... – user3608663 2015-04-03 14:06:48
@ user3608663这个答案会保存你的所有ID。你可能正处于研究“struct”是个好主意的阶段。 – 2015-04-03 14:09:23
但是,如果我把:records.id = 1和records.id = 2后,这将取代1 2,不是? – user3608663 2015-04-03 14:13:46
您还可以使用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;
}
}
您也可以使用'emplace_back'并摆脱临时。 – 0x499602D2 2015-04-03 14:20:32
@ 0x499602D2确实,修改了,谢谢 – vsoftco 2015-04-03 14:21:05
没有python,但我认为它是最接近的 – 2015-04-03 14:26:21
简单地说,你可能要一个'struct'的载体。 – 2015-04-03 14:03:13
你使用的是C++ 11吗? – 2015-04-03 14:03:42
为了使用不同的类型变量。使用void *指针我认为 – 2015-04-03 14:03:47