STL之使用vector排序

2021-09-22 21:58:13 字數 1557 閱讀 6947

應用場景:

在記憶體中維持乙個有序的vector:

1//2

3 #include 4 #include 5 #include 67//

先自定義乙個結構體

8struct

test ;

13bool sortbym1( const test* v1, const test* v2)//

注意:本函式的引數的型別一定要與vector中元素的型別一致

1418

void printvector( std::vector&vec)

1930}31

32int main(int argc, char*ar**)

3343

44//

排序之前

45 std::cout<<"

before sort:

"<46printvector(vectest);

4748 std::cout<<"

對向量中的所有元素按member1進行公升序排列:

"<49std::sort(vectest.begin(),vectest.end(), sortbym1);

50printvector(vectest);

5152

//std::cout<<"對向量中的第2個到第5個元素按member1進行公升序排列:"<53

//std::sort(vectest.begin()+1,vectest.begin()+5,sortbym1);

為第6個位置

54//

printvector(vectest);

5556

for(std::vector::iterator it =vectest.begin();

57 it != vectest.end(); ++it)

6061

return0;

62}6364 root@u18:~/cp/test# g++ vector_sort.cpp -g -wall

65 root@u18:~/cp/test# ./a.out

66before sort:670

sh68

1shsh692

shshsh703

shshshsh714

shshshshsh725

shshshshshsh736

shshshshshshsh747

shshshshshshshsh758

shshshshshshshshsh769

shshshshshshshshshsh

77對向量中的所有元素按member1進行公升序排列:789

shshshshshshshshshsh798

shshshshshshshshsh807

shshshshshshshsh816

shshshshshshsh825

shshshshshsh834

shshshshsh843

shshshsh852

shshsh861

shsh

870 sh

STL之vector的使用

本文 vector是連續記憶體容器,換句話說,標準要求所有標準庫實現的時候,vector中的元素的記憶體必須是連續的。所以對於插入和刪除的時間複雜度是很高的,因為刪除或者插入的時候,需要元素的移動,即元素複製拷貝。vector的內部實現一般需要用到placement new 所以效率很高,因為很多的...

STL之vector使用詳解

好久不用stl了,忘的差不多了,總結一下vector的使用方式,就不對每個方法做出詳細解釋了,只給出了如何用 void testvector 構造乙個元素值全為2大小為10的vector vectorv1 10,2 用指標構造 vectorv2 a,a 10 用vector iterator構造 v...

教你使用STL容器之vector

c 語言本身提供了乙個序列式容器array,stl另外再提供vector list deque stack queue priority queue等序列式容器。vector的資料安排以及操作方式,與array是很相似的,唯一的不同點在於空間的運用的靈活性,array是靜態的,一旦配置了就不能再改變...