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(队列

目录
打赏
0
0
0
0
11
分享
相关文章
第二问:C++中const用法详解
`const` 是 C++ 中用于定义常量的关键字,主要作用是防止值被修改。它可以修饰变量、指针、函数参数、返回值、类成员等,确保数据的不可变性。`const` 的常见用法包括:
175 2
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
5月前
|
C++标准库(速查)总结
C++标准库(速查)总结
141 6
|
5月前
|
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
156 10
超级好用的C++实用库之服务包装类
通过本文对Boost.Asio、gRPC和Poco三个超级好用的C++服务包装类库的详细介绍,开发者可以根据自己的需求选择合适的库来简化开发工作,提高代码的效率和可维护性。每个库都有其独特的优势和适用场景,合理使用这些库可以极大地提升C++开发的生产力。
63 11
【C++】map、set基本用法
本文介绍了C++ STL中的`map`和`set`两种关联容器。`map`用于存储键值对,每个键唯一;而`set`存储唯一元素,不包含值。两者均基于红黑树实现,支持高效的查找、插入和删除操作。文中详细列举了它们的构造方法、迭代器、容量检查、元素修改等常用接口,并简要对比了`map`与`set`的主要差异。此外,还介绍了允许重复元素的`multiset`和`multimap`。
90 3
【C++】map、set基本用法
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
3月前
|
C++
第十三问:C++中静态变量的用法有哪些?
本文介绍了 C++ 中静态变量和函数的用法及原理。静态变量包括函数内的静态局部变量和类中的静态成员变量,前者在函数调用间保持值,后者属于类而非对象。静态函数不能访问非静态成员,但可以通过类名直接调用。静态链接使变量或函数仅在定义文件内可见,避免命名冲突。
109 0
【C++】优先级队列(容器适配器)
本文介绍了C++ STL中的线性容器及其适配器,包括栈、队列和优先队列的设计与实现。详细解析了`deque`的特点和存储结构,以及如何利用`deque`实现栈、队列和优先队列。通过自定义命名空间和类模板,展示了如何模拟实现这些容器适配器,重点讲解了优先队列的内部机制,如堆的构建与维护方法。
82 0
|
5月前
|
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
107 5

热门文章

最新文章