vector

简介: vector

1.vector

vector vjihe3; //语法错误,因为vector不能用来装引用,引用只是一个别名而不是对象

vector<int> a{ 1,2,3,4,5 };
    for (auto& aaa : a)
    {
        aaa = 2;
    }
    for (auto& aaa : a)
        cout << aaa << endl;

注意不要在for循环内改变vector的容量,增加删除元素都是不可以

2.迭代器

迭代器可以理解成用来指向容器中的某个元素的,有点像指针

vector iv = {100, 200, 300}; //定义一个容器

vector::iterator iter; //定义迭代器,也必须是vector开头

iterator是什么,它是每个容器(如vector)里面都定义了的一个成员(类型名),这个名字是固定的,请记住

每一种容器,如vector,都绑定了一个叫做begin的成员函数和一个叫end的成员函数

这两个成员函数用来返回迭代器的类型

iter = iv.begin();

iter = iv.end();//end返回的迭代器指向的并不是最后一个元素,而是末端元素的后面,这个后面怎么理解呢,就是end()指向的是一个不存在的元素

end起到了一个岗哨的作用,当从begin开始走,当begin走到end的位置时候,说明遍历完所有元素了

3.反向迭代器,rbegin,rend

迭代器中的iter++和++iter是同样的功能,让迭代器指向容器中的下一个元素,但是如果已经指向了end,就不能再++了,否则运行报错

–iter和iter–是一样的道理

struct student
{
    int num;
};
vector<student> sv;
student mystu;
mystu.num = 100;
sv.push_back(mystu);//把对象mystu复制给了sv容器中
mystu.num = 200;
vector<student>iterator iter;
iter = sv.begin();
cout<<(*iter).num << endl; //100,注意引用方法,*iter是一个结构变量,所以用“.”成员来引用成员
cout <<iter->num <<endl;//100,iter想成一个指针,所以用->引用成员

每个容器除了iterator这种迭代器类型,还有另一种迭代器类型叫做const_iterator,这里不能改的意思是,迭代器指向的元素不能改变,而不是迭代器不能变,迭代器还是可以不断指向容器中其他元素的,所以只能读元素,不能改元素,有点像常量指针,而iterator可以读也可以写

如果容器对象是一个常量,那么就必须用const_iterator否则报错

cbegin,cend成员函数,返回的是都是常量迭代器const_iterator;

vector<int> iv = { 1,2,3,4,5 };
    vector<int>::const_iterator it;
    for (it = iv.cbegin(); it != iv.cend(); ++it)
    {
        *it = 888; //错误,不能给常量赋值,这说明cbegin返回的是常量迭代器
        cout << *it << endl;
    }

4.迭代器失效

如果在for循环里面插入元素到容器的话,那就必须跳出循环体,不能再继续用这些迭代器操作容器

for (auto beg = iv.begin(), end = iv.end(); beg != end; ++beg)
{
    iv.push_back(88);
    break; //立刻跳出循环,这里的beg,end都不能再使用,以免出问题,后续重新用循环重新拿begin和end使用
}
//重新定位迭代器
for (auto beg = iv.begin(), end = iv.end(); beg != end; ++beg)
{
    //....
}
相关文章
|
6月前
|
存储 算法 测试技术
C++:Vector的使用
C++:Vector的使用
|
6月前
|
存储 编译器 C语言
vector讲解
vector讲解
75 0
|
1月前
|
算法 C++ 容器
C++之打造my vector篇(下)
C++之打造my vector篇(下)
26 0
|
1月前
|
算法 C++ 容器
【C++】—— vector使用
【C++】—— vector使用
|
3月前
|
安全 Java
Vector的使用
Vector的使用
19 2
|
4月前
|
存储 C语言 C++
【C++】vector的使用上
**C++ STL的vector简介与用法:** Vector是动态顺序数组,提供高效下标访问,支持动态增长。与数组类似但可自动调整大小。常用构造函数包括默认、填充、迭代器范围和拷贝构造。析构函数自动释放内存。赋值运算符执行深拷贝。迭代器接口包括`begin()`和`end()`(反向对应`rbegin()`和`rend()`),C++11增加了const版本以支持只读访问。示例代码展示了不同构造函数和迭代器的使用。
|
4月前
|
编译器 C++
【C++】vector的使用下
**C++ 中的 `std::vector` 概要:** - **元素获取:** 支持 `operator[]`(越界时不检
|
5月前
|
存储 索引 容器
vector
【6月更文挑战第17天】
55 0
|
6月前
|
算法 编译器 C++
(C++)vector介绍及其使用
(C++)vector介绍及其使用
65 0
|
11月前
|
编译器 C++
c++ vector的使用
vector 的初始化
61 0