📅  最后修改于: 2023-12-03 15:35:09.644000             🧑  作者: Mango
在C++中,STL是一个非常有用的工具集,它提供了很多数据结构和算法函数。其中,插入和删除是两个非常基础的操作,本文将介绍C++中STL集中的插入和删除操作。
STL提供了很多不同类型的容器,每种容器都有自己独特的插入方式。下面将分别介绍一些常用容器的插入操作。
vector是一个动态数组,可以根据需要自动扩展。vector的插入操作有以下几种方式。
std::vector<int> v{1, 2, 3};
v.push_back(4);
std::vector<int> v{1, 2, 3};
auto it = v.begin() + 1;
v.insert(it, 4);
std::vector<int> v{1, 2, 3};
auto it = v.begin() + 1;
v.insert(it, {4, 5, 6});
list是一个双向链表,每个节点都存储了一个元素。list的插入操作有以下几种方式。
std::list<int> l{1, 2, 3};
l.push_back(4);
std::list<int> l{1, 2, 3};
l.push_front(0);
std::list<int> l{1, 2, 3};
auto it = l.begin()++;
l.insert(it, 4);
std::list<int> l{1, 2, 3};
auto it = l.begin()++;
l.insert(it, {4, 5, 6});
set和map都是基于红黑树实现的,插入操作有以下几种方式。
std::set<int> s{1, 2, 3};
s.insert(4);
std::map<int, std::string> m{{1, "one"}, {2, "two"}, {3, "three"}};
m.insert({4, "four"});
std::map<int, std::string> m{{1, "one"}, {2, "two"}, {3, "three"}};
m.insert({{4, "four"}, {5, "five"}, {6, "six"}});
unordered_set和unordered_map是基于哈希表实现的,插入操作有以下几种方式。
std::unordered_set<int> us{1, 2, 3};
us.insert(4);
std::unordered_map<int, std::string> um{{1, "one"}, {2, "two"}, {3, "three"}};
um.insert({4, "four"});
std::unordered_map<int, std::string> um{{1, "one"}, {2, "two"}, {3, "three"}};
um.insert({{4, "four"}, {5, "five"}, {6, "six"}});
STL中的容器提供了很多种删除元素的方式,下面将介绍一些常用容器的删除操作。
vector的删除操作主要有以下几种方式。
std::vector<int> v{1, 2, 3};
v.pop_back();
std::vector<int> v{1, 2, 3};
auto it = v.begin() + 1;
v.erase(it);
std::vector<int> v{1, 2, 3, 4, 5};
auto it1 = v.begin() + 1;
auto it2 = v.begin() + 3;
v.erase(it1, it2);
list的删除操作主要有以下几种方式。
std::list<int> l{1, 2, 3};
l.pop_front();
std::list<int> l{1, 2, 3};
l.pop_back();
std::list<int> l{1, 2, 3};
auto it = l.begin()++;
l.erase(it);
std::list<int> l{1, 2, 3, 4, 5};
auto it1 = l.begin()++;
auto it2 = l.begin()++ + 3;
l.erase(it1, it2);
set和map的删除操作主要有以下几种方式。
std::set<int> s{1, 2, 3};
s.erase(2);
std::set<int> s{1, 2, 3};
auto it = s.find(2);
s.erase(it);
std::set<int> s{1, 2, 3, 4, 5};
auto it1 = s.find(2);
auto it2 = s.find(4);
s.erase(it1, it2);
unordered_set和unordered_map的删除操作方式和set和map基本相同。
以上就是C++中STL集中的插入和删除操作的介绍。STL提供了非常丰富的数据结构和算法函数,程序员们可以根据实际需要选择合适的数据结构和算法函数来解决具体的问题。