C 向量vector和模板的應用

2021-08-04 00:20:53 字數 2193 閱讀 4809

c++裡面的vector提供了對array/list的操作功能, 如下**演示了如何建立vector並進行增加元素/查詢元素/刪除元素/列舉元素, 還演示了如何應用模板(template)來實現通用資料的vector列印.

#define _crtdbg_map_alloc

#include #include #include "stdafx.h"

#include #include #include using namespace std;

templatevoid printvector(_t pvvtsrc)

cout << endl << "vector size: " << pvvtsrc.size() << endl;

}templatevoid printvectorc(_c pvvtsrc)

cout << endl << "vector size: " << pvvtsrc.size() << endl;

}void testvectorchars()

printvectorc(lvvtchars);

}void testvector()

printvector(lvvtints);

lvvtints.insert(find(lvvtints.begin(), lvvtints.end(), 1), 2); //在1的前面插入2

printvector(lvvtints);

lvvtints.insert(find(lvvtints.begin(), lvvtints.end(), 2), 3); //在2的前面插入3

lvvtints.insert(find(lvvtints.begin(), lvvtints.end(), 2), 3); //在2的前面插入3

printvector(lvvtints);

//刪除所有3

for (vector::iterator lvnitem = lvvtints.begin(); lvnitem != lvvtints.end(); lvnitem++)

printvector(lvvtints); }

int main(int argc, char* argv)

上面**, 由於string是乙個類,所以template不通用, 只能重新用template定義乙個類相關的模板.

執行結果:

5 4 3 1

vector size: 4

5 4 1

vector size: 3

5 4 2 1

vector size: 4

5 4 3 3 2 1

vector size: 6

5 4 2 1

vector size: 4

one two three

vector size: 3

one two

vector size: 2

vector 與陣列的互相轉換:

//測試小數陣列與vector的互相轉換

void testfloatarrsvector() ;

// float arrays to vector

vectorlvvfitems (lvflitems, lvflitems + sizeof(lvflitems) / sizeof(float));

printvector(lvvfitems);

//亦可以通過下標直接訪問元素

for (size_t i = 0; i < lvvfitems.size(); i++)

//vector to float arrays

if (!lvvfitems.empty())

deletelvflnew;

cout << endl;

// 或者直接指向vector的記憶體塊,將其轉換為陣列來用.

float *lvflpt = &lvvfitems[0];

for (size_t i = 0; i < lvvfitems.size(); i++)

}}

從上述**演示了從陣列轉vector和從vector轉陣列,  在vector轉陣列用了兩種方法, 一種是先將資料做了乙份拷貝再使用, 另一種方法是可以直接用 &lvvfitems[0]和lvvfitems.size()作為陣列資料來用了.

C 標準模板庫 向量(vector)

1 可將向量 vector 想象成為乙個在程式執行時能改變長度的陣列。因為在c c 中定義了乙個陣列之後,這個陣列是固定長度的,不能隨意改變大小,向量和陣列用處相同,不同之處在於能自由改變大小。2 宣告變數v是基型別為int的向量 vectorv 3 vector代表乙個模板類,可以將t換成任意資料...

C 模板庫(STL)入門 vector向量

功能 vector翻譯是向量,其實是乙個長度會根據需要改變的陣列。標頭檔案 include vector 還要加using namespace std 定義 vector typename name 比如 vectorname 這樣我就定義了乙個int型的邊長陣列 其他型別的以及二維邊長陣列的定義就...

標準模板庫 (向量 vector)

編寫程式練習了vector 的主要函式。從中學習到了一些知識點 1.vector的內部其實還是陣列。2.at用於按照索引訪問任意位置的元素,front用於訪問頭元素,back用於訪問尾元素。3.arr.at i 和arr i 是等價的,在vector的內部過載了操作符。4.push back用於在尾...