阅读量:0
在Linux环境下使用C++ STL(Standard Template Library)容器进行编程,可以极大地提高开发效率和代码的可读性。以下是一些常用的STL容器及其基本用法:
1. 向量(std::vector)
向量是一个动态数组,可以在运行时调整大小。
#include
#include
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
// 访问元素
std::cout << "First element: " << vec[0] << std::endl;
// 添加元素
vec.push_back(6);
// 遍历元素
for (int i : vec) {
std::cout<< i << " ";
}
std::cout << std::endl;
return 0;
}
2. 列表(std::list)
列表是一个双向链表,支持高效的插入和删除操作。
#include
#include
int main() {
std::list<int> lst = {1, 2, 3, 4, 5};
// 在头部添加元素
lst.push_front(0);
// 遍历元素
for (int i : lst) {
std::cout<< i << " ";
}
std::cout << std::endl;
// 删除元素
lst.remove(3);
return 0;
}
3. 双端队列(std::deque)
双端队列是一个双端队列,支持在两端高效地插入和删除元素。
#include
#include
int main() {
std::deque<int> deq = {1, 2, 3, 4, 5};
// 在头部添加元素
deq.push_front(0);
// 在尾部添加元素
deq.push_back(6);
// 访问元素
std::cout << "First element: " << deq.front() << std::endl;
std::cout << "Last element: " << deq.back() << std::endl;
// 遍历元素
for (int i : deq) {
std::cout<< i << " ";
}
std::cout << std::endl;
return 0;
}
4. 栈(std::stack)
栈是一个后进先出(LIFO)的数据结构。
#include
#include
int main() {
std::stack<int> stk;
// 压栈
stk.push(1);
stk.push(2);
stk.push(3);
// 访问栈顶元素
std::cout << "Top element: " << stk.top() << std::endl;
// 弹栈
stk.pop();
// 遍历栈元素
while (!stk.empty()) {
std::cout << stk.top() << " ";
stk.pop();
}
std::cout << std::endl;
return 0;
}
5. 队列(std::queue)
队列是一个先进先出(FIFO)的数据结构。
#include
#include
int main() {
std::queue<int> que;
// 入队
que.push(1);
que.push(2);
que.push(3);
// 访问队首元素
std::cout << "Front element: " << que.front() << std::endl;
// 出队
que.pop();
// 遍历队列元素
while (!que.empty()) {
std::cout << que.front() << " ";
que.pop();
}
std::cout << std::endl;
return 0;
}
6. 优先队列(std::priority_queue)
优先队列是一个基于堆的数据结构,元素按优先级排序。
#include
#include
int main() {
std::priority_queue<int> pq;
// 插入元素
pq.push(3);
pq.push(1);
pq.push(4);
pq.push(1);
pq.push(5);
// 访问最大元素
std::cout << "Top element: " << pq.top() << std::endl;
// 删除最大元素
pq.pop();
// 遍历优先队列元素
while (!pq.empty()) {
std::cout << pq.top() << " ";
pq.pop();
}
std::cout << std::endl;
return 0;
}
7. 映射(std::map)
映射是一个键值对容器,键是唯一的。
#include
#include
int main() {
std::mapint> mp = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
// 访问元素
std::cout << "Apple count: " << mp["apple"] << std::endl;
// 插入元素
mp["orange"] = 4;
// 遍历元素
for (const auto& pair : mp) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
8. 集合(std::set)
集合是一个无序且不重复的元素容器。
#include
#include
int main() {
std::set<int> st = {3, 1, 4, 1, 5, 9};
// 插入元素
st.insert(2);
// 删除元素
st.erase(3);
// 遍历元素
for (int i : st) {
std::cout<< i << " ";
}
std::cout << std::endl;
return 0;
}
这些示例展示了如何在Linux环境下使用C++ STL容器进行基本操作。根据具体需求选择合适的容器,并结合STL提供的算法和迭代器,可以编写出高效且简洁的代码。
以上就是关于“Linux C++编程中如何使用STL容器”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm