C++标准库容器的基本用法

简介: C++标准库容器的基本用法

一、引言

在C++编程中,标准库容器(STL Containers)是一组用于存储数据的模板类。这些容器类提供了高效且灵活的方式来管理和操作数据,包括序列容器、关联容器和容器适配器。本文将介绍C++标准库中最常用的几种容器的基本用法,包括vectorlistsetmap以及stackqueue等容器适配器。

二、序列容器

vector(向量)

vector是一个动态数组,它可以自动管理内存和大小。vector提供了许多成员函数来访问和修改其元素,如push_back()pop_back()size()等。

示例:

cpp

 

#include <iostream> 

 

#include <vector> 

 

 

 

int main() {

 

std::vector<int> vec;

 

vec.push_back(1);

 

vec.push_back(2);

 

vec.push_back(3);

 

 

 

for (int i = 0; i < vec.size(); ++i) {

 

std::cout << vec[i] << ' ';

 

}

 

// 输出:1 2 3

 

 

 

return 0;

 

}

list(双向链表)

list是一个双向链表,允许在链表的任何位置插入和删除元素。list提供了许多成员函数来操作其元素,如push_front()push_back()remove()等。

示例:

cpp

 

#include <iostream> 

 

#include <list> 

 

 

 

int main() {

 

std::list<int> lst;

 

lst.push_front(1);

 

lst.push_back(2);

 

lst.push_back(3);

 

 

 

for (auto it = lst.begin(); it != lst.end(); ++it) {

 

std::cout << *it << ' ';

 

}

 

// 输出:1 2 3

 

 

 

return 0;

 

}

三、关联容器

set(集合)

set是一个包含唯一元素的集合,它根据元素的键值自动排序。set中的元素不能重复,且插入和删除操作的时间复杂度通常是对数级别的。

示例:

cpp

 

#include <iostream> 

 

#include <set> 

 

 

 

int main() {

 

std::set<int> s;

 

s.insert(3);

 

s.insert(1);

 

s.insert(2);

 

 

 

for (auto it = s.begin(); it != s.end(); ++it) {

 

std::cout << *it << ' ';

 

}

 

// 输出:1 2 3

 

 

 

return 0;

 

}

map(映射)

map是一个关联数组,它允许根据键(key)来存储和检索值(value)。map中的键是唯一的,且键和值之间的关联是持久的。

示例:

cpp

 

#include <iostream> 

 

#include <map> 

 

 

 

int main() {

 

std::map<std::string, int> m;

 

m["one"] = 1;

 

m["two"] = 2;

 

m["three"] = 3;

 

 

 

for (const auto& pair : m) {

 

std::cout << pair.first << ": " << pair.second << std::endl;

 

}

 

// 输出:one: 1

 

// two: 2

 

// three: 3

 

 

 

return 0;

 

}

四、容器适配器

stack(栈)

stack是一个后进先出(LIFO)的数据结构,它提供了基本的栈操作,如push()pop()top()empty()stack通常用于需要按特定顺序访问和存储数据的场景。

示例:

cpp

 

#include <iostream> 

 

#include <stack> 

 

 

 

int main() {

 

std::stack<int> stk;

 

stk.push(1);

 

stk.push(2);

 

stk.push(3);

 

 

 

while (!stk.empty()) {

 

std::cout << stk.top() << ' '; // 输出:3 2 1

 

stk.pop();

 

}

 

 

 

return 0;

 

}

**queue(队列

目录
相关文章
|
5天前
|
存储 安全 编译器
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
30 0
|
2月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
79 6
|
2月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
112 10
|
27天前
|
存储 C++ 容器
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
30 3
【C++】map、set基本用法
|
27天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
5天前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
17 0
|
27天前
|
存储 设计模式 C++
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
32 0
|
2月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
79 5
|
2月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
72 1
|
2月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
73 2
下一篇
DataWorks