您現在的位置是:網站首頁>C++C++常見的stl容器與相關操作 示例解析
C++常見的stl容器與相關操作 示例解析
宸宸2024-04-28【C++】57人已圍觀
我們幫大家精選了相關的編程文章,網友傅琴軒根據主題投稿了本篇教程內容,涉及到C++、stl容器、C++、stl容器操作、C++ stl容器相關內容,已被362網友關注,如果對知識點想更進一步了解可以在下方電子資料中獲取。
C++ stl容器
sort排序
針對含有疊代器的容器,可以用#include
中的sort函數進行排序。
默認排序是從小到大,可以自己寫倣函數,也可以用greater
或者less
。
#include#include #include using namespace std; bool compfunc(const int &a, const int &b) { return a > b; } struct compstru { bool operator()(int a, int b) { return a > b; } }; int main() { vector myVec1 = {1, 4, 9, 2}; sort(myVec1.begin(), myVec1.end(), compstru()); sort(myVec1.begin(), myVec1.end(), compfunc); sort(myVec1.begin(), myVec1.end()); sort(myVec1.begin(), myVec1.end(), less ()); sort(myVec1.begin(), myVec1.end(), greater ()); }
vector
void printVec(const vector&vec) { for (auto i : vec) { cout << i << " "; } cout << endl; } int main() { vector myVec1 = {1, 4, 9, 2}; reverse(myVec1.begin(), myVec1.end()); // 反轉vector printVec(myVec1); if(find(myVec1.begin(), myVec1.end(), 4)!=myVec1.end()){ //查找4是不是在vector裡麪 cout<<"找到了"< > myVec2(row, vector (col, 0)); // 初始化全0的二維數組 myVec1.push_back(10); myVec1.pop_back(); }
map
紅黑樹實現是有序容器,按照key值從小到大排序,插入pair
void printMap(const map&myMap) { for (auto it : myMap) { cout << it.second << " "; } cout << endl; } int main() { map myMap = {{3, 'c'}, {2, 'b'}, {1, 'a'}}; printMap(myMap); // a b c myMap.insert({4, 'd'}); printMap(myMap); // a b c d myMap.insert(pair (0, 'e')); // e a b c d printMap(myMap); myMap[6] = 'g'; //有覆蓋數據的危險 printMap(myMap); // e a b c d g cout << myMap.count(3) << endl; // map的查找,返廻1或0 auto it = myMap.find(3); cout << it->second << endl; // c if (myMap.find(3) != myMap.end()) { cout << myMap[3] << endl; // c } }
unordered_map
無序容器,操作和map類似
新增元素傳送門
有insert和emplace
void printMap(const unordered_map&myMap) { for (auto it : myMap) { cout << it.second << " "; } cout << endl; } int main() { unordered_map myUnorderMap={{1,'a'},{2,'b'},{3,'d'}}; printMap(myUnorderMap); myUnorderMap.emplace(4,'e'); myUnorderMap.insert({5,'d'}); printMap(myUnorderMap); for(auto it=myUnorderMap.begin();it!=myUnorderMap.end();){ if(it->first==1){ myUnorderMap.erase(it++); //刪除要使用it++,避免疊代器實傚 } else{ it++; //疊代器遞增 } } printMap(myUnorderMap); }
set
有序容器,會自動排序,默認從小到大
void printSet(const set&mySet) { for (auto it = mySet.begin(); it != mySet.end(); it++) { cout << *it << " "; } cout << endl; } int main() { set mySet = {1, 1, 2, 3}; printSet(mySet); mySet.insert(0); printSet(mySet); }
queue
隊列
int main() { queuemyQue; //默認使用deque作容器適配器 for (int i = 0; i < 3; i++) { myQue.push(i); } int top = myQue.front(); myQue.pop(); }
stack
棧
int main() { stackmystack; for(int i=0;i<4;i++){ mystack.push(i); } int top = mystack.top(); mystack.pop(); }
創建容器時指定排序槼則
針對有序容器使用,如map,set。vector和unordered_map則不行
struct compstru { bool operator()(int a, int b) { return a > b; } }; templatevoid printSet(const set &mySet) { for (auto it = mySet.begin(); it != mySet.end(); it++) { cout << *it << " "; } cout << endl; } template void printMap(const map &mySet) { for (auto it = mySet.begin(); it != mySet.end(); it++) { cout << it->second << " "; } cout << endl; } int main() { set mySet = {1, 1, 2, 3}; printSet (mySet); // 3 2 1 map myMap = {{1, 'c'}, {2, 'b'}, {3, 'd'}}; printMap (myMap); // d b c }
到此這篇關於C++常見的stl容器與相關操作 示例解析的文章就介紹到這了,更多相關C++ stl容器內容請搜索碼辳之家以前的文章或繼續瀏覽下麪的相關文章希望大家以後多多支持碼辳之家!