1.0vector的介绍及使用
vector的介绍
可改变size的顺序表!
1.2 vector的使用
1初始化
void test_vector1() { vector<int> v1; vector<int> v2(10, 8);//10个8初始化 vector<int> v3(++v2.begin(), --v2.end());//迭代器区间 vector<int> v4(v3);//迭代器区间 string s("hello world");//string 结尾有\0 vector<char> v5(s.begin(), s.end());//vector 结尾没有\0 }
2 迭代器
| iterator的使用 | 类型 | 接口说明 |
|---|---|---|
| begin+ end | iterator const_iterator |
获取第一个数据位置的iterator/const_iterator, 获取最后一个数据的下一个位置 的iterator/const_iterator |
| rbegin + rend | reverse_iterator const_reverse_iterator |
获取最后一个数据reverse_iterator,获取第一个数据前一个位置的 reverse_iterator |
迭代器遍历
operator[] 遍历
//遍历:
for (size_t i = 0;i<v.size();++i)
{
v[i] += 1;
cout << v[i] << ' ';
}
cout << endl;
iterator 遍历
//遍历:迭代器
vector<int>::iterator it = v.begin();
while (it != v.end())
{
*it -= 1;
cout << *it << " ";
++it;
}
cout << endl;
范围for 遍历
//遍历:范围for
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
指针 遍历
int a[] = { 1,2,3 };
//原生指针就是天然的迭代器,数组支持范围for,会被替换成指针
for (int* p = a; p < a + sizeof(a) / sizeof(int); ++p)
{
//
}
迭代器分类
| 类型 | 中文名 | 特点 | 迭代器 | 参数是迭代器的对象 | 可传参数 |
|---|---|---|---|---|---|
| iterator | 迭代器 | 查看类的迭代器类型, 看iterator的类型 |
|||
| input_iterator | 只写迭代器 | 没有实际对应的类型 | 单向 双向 随机 |
||
| output_iterator | 只读迭代器 | 没有实际对应的类型 | |||
| forwad_iterator | 单向迭代器 | 只能++ | <forward_list> <unordered_set> <unordered_map> |
||
| bidirectional_iterator | 双向迭代器 | ++ / – | < list> < map> < set> |
< reverse> | 随机 双向 |
| randomaccess_iterator | 随机迭代器 | ++ /-- + / - |
< deque> < vector> < string> |
< sort> | 随机 |
查看迭代器类型
迭代器失效
一般发生在insert/erase中
这篇博客详细介绍了C++中的vector,包括其介绍、使用方法、迭代器操作、增删查改、套娃使用、const修饰和swap函数。还涉及到迭代器失效的情况以及在实际编程中的应用。此外,博主提供了模拟实现vector的练习和具体实现,涵盖构造函数、析构函数、成员函数等关键部分。



最低0.47元/天 解锁文章
737

被折叠的 条评论
为什么被折叠?



