如何用不同類型的變量聲明和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