轉載[http://www.cnblogs.com/oomusou/archive/2008/08/01/vector_struct.html]
Abstract
一個很常見的需求:『將struct塞進vector』,在C++該怎麼做呢?
Introduction
使用環境:Visual C++ 9.0 / Visual Studio 2008
由於vector只允許一個欄位,所以才會想將struct塞進vector,以彌補vector的不足。
struct_in_vector.cpp / C++
以上的code,看起來都是push_back()同一個master object,這樣沒有問題嗎?因為push_back()進vector是採用copy的方式,會產生一個新的副本,所以才可以這樣使用。
Abstract
一個很常見的需求:『將struct塞進vector』,在C++該怎麼做呢?
Introduction
使用環境:Visual C++ 9.0 / Visual Studio 2008
由於vector只允許一個欄位,所以才會想將struct塞進vector,以彌補vector的不足。
struct_in_vector.cpp / C++
/*
(C) OOMusou 2008 http://oomusou.cnblogs.com
Filename : struct_in_vector.cpp
Compiler : Visual C++ 9.0 / Visual Studio 2008
Description : Demo how to insert struct in vector
Release : 08/01/2008 1.0
*/
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct Student {
int id;
string name;
};
int main() {
vector svec;
struct Student master;
master.id = 1;
master.name = "clare";
svec.push_back(master);
master.id = 2;
master.name = "jingyi";
svec.push_back(master);
master.id = 3;
master.name = "jessie";
svec.push_back(master);
vector::iterator iter = svec.begin();
for(iter; iter != svec.end(); ++iter)
cout << iter->id << " " << iter->name << endl;
}
執行結果
clare jingyi jessie由於vector內放的是struct,所以push_back()要塞個也是struct,而不能針對struct的member來塞。因此要先宣告一個暫存的struct做中介。
以上的code,看起來都是push_back()同一個master object,這樣沒有問題嗎?因為push_back()進vector是採用copy的方式,會產生一個新的副本,所以才可以這樣使用。











