没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
STL容器
C++中的标准模板库(STL)包含了一系列常用的容器,每种容器都为不同的数据结构和算法提供了支
持。以下是对一些主要STL容器的详细讲解,包括其声明方法、使用方法、使用技巧和注意事项。
1. 向量(
vector
)
1.1 声明方法
1.2 使用方法
1.3 使用技巧
预留空间:使用 reserve 函数预留空间,减少重新分配的次数,提高性能。
访问元素:使用 at 函数进行范围检查。
1.4 注意事项
内存管理: vector 的底层实现是动态数组,频繁的插入和删除操作可能会导致内存的重新分配,
影响性能。
迭代器失效:插入或删除元素时,可能导致迭代器失效,需要小心处理。
#include <vector>
std::vector<int> vec; // 默认构造函数
std::vector<int> vec(10); // 大小为10的vector,默认初始化为0
std::vector<int> vec(10, 5); // 大小为10的vector,每个元素初始化为5
std::vector<int> vec2(vec); // 拷贝构造函数
vec.push_back(1); // 在末尾添加元素1
vec.pop_back(); // 移除末尾的元素
int size = vec.size(); // 获取vector的大小
int first = vec.front(); // 获取第一个元素
int last = vec.back(); // 获取最后一个元素
int elem = vec[2]; // 通过索引访问元素
vec.clear(); // 清空vector
vec.reserve(100);
int elem = vec.at(2); // 如果索引超出范围,会抛出异常
1.5 学习案例:
1.5.1 简单使用
输出结果:
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
int main(void) {
std::vector<int> vector_int_1; // 默认构造函数
std::vector<int> vector_int_2(10); // 大小为10的vector,默认初始化为0
std::vector<int> vector_int_3(10, 5); // 大小为10的vector,每个元素初始化为
5
std::vector<int> vector_int_4(vector_int_3); // 拷贝构造函数
// 输出 vector_int_1 的值
std::cout << "vector_int_1: ";
for (int i = 0; i < vector_int_1.size(); ++i) { //使用.size()可以获取vector的长
度
std::cout << vector_int_1[i] << " ";
}
std::cout << std::endl;
// 输出 vector_int_2 的值
std::cout << "vector_int_2: ";
for (int i = 0; i < vector_int_2.size(); ++i) {
std::cout << vector_int_2[i] << " ";
}
std::cout << std::endl;
// 输出 vector_int_3 的值
std::cout << "vector_int_3: ";
for (int i = 0; i < vector_int_3.size(); ++i) {
std::cout << vector_int_3[i] << " ";
}
std::cout << std::endl;
// 输出 vector_int_4 的值
std::cout << "vector_int_4: ";
for (int i = 0; i < vector_int_4.size(); ++i) {
std::cout << vector_int_4[i] << " ";
}
std::cout << std::endl;
return 0;
}
1.5.2 使用迭代器
std::vector 迭代器在C++中是用来遍历 vector 容器的工具,类似于指针,提供了对容器中元素的访
问和操作。以下是对 vector 迭代器的详细讲解,包括它们的用法、类型、常见操作以及使用技巧。
1. 迭代器类型
iterator
:普通迭代器,支持读写操作,通常用于非 const 的 vector 。
const_iterator
:常量迭代器,只读操作,不允许修改元素的值,适用于 const 的 vector 。
reverse_iterator
:反向迭代器,从容器的末尾开始遍历。
const_reverse_iterator
:常量反向迭代器,只读操作,从容器的末尾开始遍历。
2. 声明和初始化
3. 迭代器的常见操作
1. 迭代器的基本操作
begin()
和
end()
:返回指向容器第一个元素和最后一个元素之后位置的迭代器。
rbegin()
和
rend()
:返回指向容器最后一个元素和第一个元素之前位置的反向迭代器。
++it
:前置递增运算符,移动到下一个元素。
it++
:后置递增运算符,先访问当前元素,再移动到下一个元素。
--
it
:前置递减运算符,移动到上一个元素。
it
-- :后置递减运算符,先访问当前元素,再移动到上一个元素。
*it
:解引用运算符,获取迭代器指向的元素。
it == it2
和
it != it2
:比较两个迭代器是否相等。
2. 遍历 vector
std::vector<int> vec = {1, 2, 3, 4, 5};
// 普通迭代器
std::vector<int>::iterator it = vec.begin();
// 常量迭代器
std::vector<int>::const_iterator cit = vec.begin();
// 反向迭代器
std::vector<int>::reverse_iterator rit = vec.rbegin();
// 常量反向迭代器
std::vector<int>::const_reverse_iterator crit = vec.rbegin();
std::vector<int> vec = {1, 2, 3, 4, 5};
// 使用普通迭代器遍历vector
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 使用const迭代器遍历vector
for (std::vector<int>::const_iterator cit = vec.cbegin(); cit != vec.cend();
++cit) {
std::cout << *cit << " ";
}
剩余14页未读,继续阅读
资源评论
猫猫爱吃鱼507
- 粉丝: 52
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于语音识别的智能垃圾分类系统源代码(完整前后端+mysql+说明文档+LW).zip
- 基于网易新闻+评论的舆情热点分析平台源代码(完整前后端+mysql+说明文档+LW).zip
- MATLAB实现BiLSTM(双向长短期记忆神经网络)数据异常检测(含完整的程序,GUI设计和代码详解)
- 653152225001783外卖管理系统.apk
- CodeBlocks_播放音乐.pdf
- 差分放大电路在电流采样中的应用
- 定制-红米7国际版解锁固件fast线刷
- STM32基础入门开发:设计按键点灯程序.pdf
- 基于B站用户行为分析系统源代码(完整前后端+mysql+说明文档+LW).zip
- STM32基础入门开发:串口数据发送与接收.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功