快捷搜索: 王者荣耀 脱发

STL中最常见的三种容器vector、list、map对比分析

vector list map 1、构造; vector<int> v1; //无参构造 1、构造 list<int>L1; //默认构造; 1、构造 map<int,int>m; //默认构造 2、vector容量、大小; if (v1.empty()) { cout << "v1为空" << endl; } else { cout << "v1不为空" << endl; cout << "v1的容量 = " << v1.capacity() << endl; cout << "v1的大小 = " << v1.size() << endl; } //resize 重新指定大小 ,若指定的更大,默认用0填充新位置,可以利用重载版本替换默认填充 v1.resize(15,10); //resize 重新指定大小 ,若指定的更小,超出部分元素被删除 v1.resize(5); 2、大小操作; if (L1.empty()) { cout << "L1为空" << endl; } e lse { cout << "L1不为空" << endl; cout << "L1的大小为: " << L1.size() << endl; } //重新指定大小 L1.resize(10); L1.resize(2); 2、大小操作 if (m.empty()) { cout << "m为空" << endl; } else { cout << "m不为空" << endl; cout << "m的大小为: " << m.size() << endl; } 3、vector插入、删除 //尾插 v1.push_back(10); //尾删 v1.pop_back(); //插入(位置迭代器) v1.insert(v1.begin(), 100); //删除(位置迭代器) v1.erase(v1.begin()); //清空 v1.erase(v1.begin(), v1.end()); v1.clear(); 3、插入、删除 //尾插 L.push_back(10); //头插 L.push_front(100); //尾删 L.pop_back(); //头删 L.pop_front(); //插入(位置迭代器) list<int>::iterator it = L.begin(); L.insert(++it, 1000); //删除 it = L.begin(); L.erase(++it); //移除 L.remove(10000); //删除容器中所有与elem值匹配的元素。 3、插入和删除 m.insert(make_pair(2, 20)); //删除 m.erase(m.begin());//删除pos迭代器所指的元素,返回下一个元素的迭代器 m.erase(3);//删除容器中值为key的元素 4、数据的存取; for (int i = 0; i < v1.size(); i++) { cout << v1[i] << " "; //也可以通过.at(i) } 4、数据存取 不支持随机访问[],.at(); cout << "第一个元素为: " << L1.front() << endl; cout << "最后一个元素为: " << L1.back() << endl; 4、查找和统计 //查找 map<int, int>::iterator pos = m.find(3); if (pos != m.end()) { cout << "找到了元素 key = " << (*pos).first << " value = " << (*pos).second << endl; } else { cout << "未找到元素" << endl; } //统计 int num = m.count(3); cout << "num = " << num << endl; 5、互换空间; v1.swap(v2); m.swap(m2); 6、排序 sort(d.begin(), d.end()); 5、反转和排序 不支持标准算法,只能使用内置的成员函数; //反转容器的元素 L.reverse(); //排序 L.sort(); //默认的排序规则 从小到大 L.sort(myCompare); //指定规则,从大到小 5、排序 //默认从小到大排序 //利用仿函数实现从大到小排序 map<int, int, MyCompare> m;
经验分享 程序员 微信小程序 职场和发展