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

目录
相关文章
|
15天前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
50 6
|
28天前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
81 10
|
28天前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
41 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
15天前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
54 5
|
15天前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
37 1
|
28天前
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
45 5
|
28天前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
44 2
|
2月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
34 6
|
2月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
29 1
|
14天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
19 4