程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> STL--向量(vector)

STL--向量(vector)

編輯:C++入門知識

STL的組成

標准模板庫STL關注的重點是泛型數據結構和算法,其關鍵組成部分是容器(containers)、算法(algorithms)、迭代器(iterators)、函數對象(Function Object)、適配(Adaptor)。   本文地址:http://www.cnblogs.com/archimedes/p/Cpp-STL-Vector.html,轉載請注明源地址。   容器(containers):容器是數據在內存中組織的方法,例如,數組、堆棧、隊列、鏈表或二叉樹(不過這些都不是STL標准容器)。STL 中的容器是一種存儲T (Template)類型值的有限集合的數據結構, 容器的內部實現一般是類。這些值可以是對象本身,如果數據類型T代表的是Class的話。   算法(algorithms):算法是應用在容器上以各種方法處理其內容的行為或功能。例如,有對容器內容排序、復制、檢索和合並的算法。在STL中,算法是由模板函數表現的。這些函數不是容器類的成員函數。相反,它們是獨立的函數。它們不僅可以將其用於STL容器,而且可以用於普通的C++數組或任何其他應用程序指定的容器。   迭代器(iterators) :一旦選定一種容器類型和數據行為(算法),那麼剩下唯一要他做的就是用迭代器使其相互作用。可以把迭代器看作一個指向容器中元素的普通指針。可以如遞增一個指針那樣遞增迭代器,使其依次指向容器中每一個後繼的元素。迭代器是STL 的一個關鍵部分,因為它將算法和容器連在一起。   函數對象(Function Object):定義了函數調用操作符(operator())的類   適配器(adaptor):封裝一個部件以提供另外的接口(例如用list實現stack)   容器的分類:
  • 序列式容器(Sequence containers)
  • 每個元素都有固定位置--取決於插入時機和地點,和元素值無關。
  • vector(向量)、deque(雙端隊列)、list(表)
  • 關聯式容器(Associated containers)
  • 元素位置取決於特定的排序准則,和插入順序無關
  • set(集合)、multiset(多重集合)、
  • pmap(映射)、multimap(多重映射)
向量(vector) 向量(vector 容器類):#include <vector> ,vector 是一個能夠存放任意類型的動態數組,是基本數組的類模板。其內部定義了很多基本操作。 內部實現: 數組 vector <T, Alloc> 可以隨機存取數據(用索引直接存取)。 向量尾部添加或刪除數據,耗時O(1)。但是在中部或頭部插入或刪除數據需要移動後面數據,耗時O(N)。 vector 類中定義了4 中種構造函數:
  • 默認構造函數,構造一個初始長度為0 的空向量,如: vector<int> v1 ;
  • 帶有單個整形參數的構造函數,此參數描述了向量的初始大小。這個構造函數還有一個可選的參數,這是一個類型為T的實例,描述了這個向量中各成員的初始值;如: vector<int> v2(n,0); 如果預先定義了 n, 他的成員值都被初始化為0;
  • 復制構造函數,構造一個新的向量,作為已存在的向量的完全復制,如: vector<int> v3(v2) ;
  • 帶兩個常量參數的構造函數,產生初始值為一個區間的向量。區間由一個半開區間 [ first,last ) 來指定。如: vector<int> v4(first,last)
舉例:
#include <cstring><vector><iostream>
  ar[] = {  , , , , , , , , , * str = <> vec1(ar, ar + ); 
    vector <  > vec2(str, str + strlen(str)); 
    cout <<  <<
     (vector<>::const_iterator p = vec1.begin();p != vec1.end(); ++<< *<<  <<  << (vector<  >::const_iterator p1 = vec2.begin();p1 != vec2.end(); ++<< *<<  

頭文件   #include<vector> 定義變量  vector<int> myvec; 主要成員函數
vector舉例:
#include <iostream><vector>
 <> INTVECTOR;
 main() { 
    INTVECTOR vec1;
    INTVECTOR vec2(, );
    INTVECTOR vec3(vec2.begin(), vec2.begin() + );
    INTVECTOR::iterator i;
    cout <<  << endl;
     (i = vec1.begin(); i != vec1.end(); ++i) cout << *i <<  ;    cout <<<<  << endl;
     (i = vec2.begin(); i != vec2.end(); ++i) cout << *i <<  ;    cout <<<<  << endl;
     (i = vec3.begin(); i != vec3.end(); ++i)  cout << *i <<  ;     cout <<
    vec1.push_back(); 
    vec1.push_back(+ , );
    vec1.insert(vec1.begin() + , vec3.begin(), vec3.end());
    cout <<  << (i = vec1.begin(); i != vec1.end(); ++i) cout << *i <<  <<
    vec2.assign(, );  
    cout <<  << (i = vec2.begin(); i != vec2.end(); ++<< *i <<  <<
    cout <<  << vec1.front() << endl;
    cout <<  << vec1.back() << endl;
    cout <<  << vec1.at() << endl;
    cout <<  << vec1[] <<
    vec1.pop_back();
    vec1.erase(vec1.begin() + , vec1.end() - );
    cout <<  << (i = vec1.begin(); i != vec1.end(); ++<< *i <<  <<
    cout <<  << vec1.size() << endl;
    cout <<  << vec1.empty() << endl;
     

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved