2015-04-03 117 views
2

如何用不同類型的變量聲明和push_back矢量的矢量。是一種很好的方法(使用數組更好)嗎?C++矢量與不同類型的矢量

我的變量是這樣的:

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

,我想獲得一個列表: ((ID1名1啓動1 END1),(ID2名2 START2 END2)...

對不起這個基本問題,但我使用Python,它允許工作 感謝

+2

簡單地說,你可能要一個'struct'的載體。 – 2015-04-03 14:03:13

+0

你使用的是C++ 11嗎? – 2015-04-03 14:03:42

+0

爲了使用不同的類型變量。使用void *指針我認爲 – 2015-04-03 14:03:47

回答

6

你不想一個二維數組,你想要的記錄數組事情是這樣的:。

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

std::vector<Record> records; 
+0

謝謝,但爲什麼我不需要2D數組?我想保存所有我的ID ... – user3608663 2015-04-03 14:06:48

+1

@ user3608663這個答案會保存你的所有ID。你可能正處於研究「struct」是個好主意的階段。 – 2015-04-03 14:09:23

+0

但是,如果我把:records.id = 1和records.id = 2後,這將取代1 2,不是? – user3608663 2015-04-03 14:13:46

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; 
    } 
} 
+0

您也可以使用'emplace_back'並擺脫臨時。 – 0x499602D2 2015-04-03 14:20:32

+0

@ 0x499602D2確實,修改了,謝謝 – vsoftco 2015-04-03 14:21:05

+0

沒有python,但我認爲它是最接近的 – 2015-04-03 14:26:21