线性表(STL版)
?1.STL的順序存儲結構--------------vector順序表
? ?? vector(向量)
? ?? size() ?? //計算當前線性表的長度
? ?? capacity()? //計算線性表的容量 ?? (該單詞的意思是 能力 ,所以可以理解為存儲能力)
? ?? reverse() ? //反向排序 ? (該單詞的意思是 反向)
? ?? clear() ?? //清空向量
? ?? erase() ? //刪除元素 ? (該單詞意思? 刪除,擦除)
? ?? resize() ? //將容器的值擴大二倍
? ?? pop_back() ? //刪除容器的末元素,并不返回該元素
? ?? erase() ?? //刪除特定的元素
? ?? reserve() ? //提前設定容量大小,避免多次擴容導致效率低下
? ?? size() ? //計算該向量的長度
? ? ?? 對于vector空向量,必須用push_back()進行添加元素,不能用下標索引的方式進行添加元素
?
一道例題:
//vector順序表 //c++中提供了順序線性表類的操作,稱為vector(向量) #include<iostream> #include<cstdio> #include<vector> #include<string> #include<cmath> #include<algorithm> //是c++特有的STL模板的算法頭文件 包含了一些特定的算法函數 ,如sort() using namespace std; //使用std命名空間 void out(int a) {cout << a << ' '; }int main() {vector<int>a; //整型STL向量類對象vector<int>::iterator ip; //vector<int>元素的指針類型vector<int>::const_iterator cip; //vector<int>元素的常量指針類型 for(int i = 0; i < 5; i++)a.push_back(i); //在向量a的末端增加一個值為i的元素for_each(a.begin(), a.end(), out); //遍歷向量cout << endl;ip = a.begin() + 2; //指針指向位序為2的元素,即第三個元素a.insert(ip, 9); //將9插在指針所指之處,即a位序為2的元素//遍歷向量a的另一種方法for(cip = a.begin(); cip != a.end(); cip++)cout << * cip << ' ';cout << endl << "a.size() = " << a.size(); //a的當前長度cout << "a.capacity = " << a.capacity(); //a的當前容量cout << "a.empty() = " << boolalpha << a.empty() << endl; //判斷a是否為空a.erase(a.begin() + 4); //刪除元素 for_each(a.begin(), a.end(), out); //遍歷向量acout << endl; cout << "a.front() = " << a.front() << " a.back() = " << a.back() << " a[3] = " << a[3] <<endl;sort(a.begin(), a.end()); //默認的升序排序for_each(a.begin(), a.end(), out); //遍歷向量cout << endl;reverse(a.begin(), a.end()); //反向排序for_each(a.begin(), a.end(), out); //遍歷向量acout << endl;a.clear(); //清空向量a }?
總結
- 上一篇: 管与c++中容量的重新分配问题
- 下一篇: STL链式存储结构——————list链