vector容器语法相关

vector容器

概念与构造

动态扩展:

  • 并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间

因为不能确保原来的空间后面是否有别的程序在用

对外提供的接口

前端封闭,尾部插入数据

push_back() 尾插

pop_back() 尾删

迭代器:

vector 提供了如下几种 迭代器

  • begin()/cbegin()
    返回指向首元素的迭代器,其中 *begin = front。

  • end()/cend()
    返回指向数组尾端占位符的迭代器,注意是没有元素的

  • rbegin()/crbegin()
    返回指向逆向数组的首元素的逆向迭代器,可以理解为正向容器的末元素

  • rend()/crend()
    返回指向逆向数组末元素后一位置的迭代器,对应容器首的前一个位置,没有元素

以上列出的迭代器中,含有字符 c 的为只读迭代器,不能通过只读迭代器去修改 vector 中的元素的值。如果一个 vector 本身就是只读的,那么它的一般迭代器和只读迭代器完全等价。只读迭代器自 C++11 开始支持。

迭代器的随机访问:

vector容器的迭代器是支持随机访问的。指的是可以跳好几个访问

关于随机访问的补充:STL中支持随机访问的迭代器

vector容器的迭代器(iterator)是C++ STL(Standard Template Library)中提供的一种工具,用于访问和遍历vector容器中的元素。迭代器提供了一种抽象化的方法,可以在不关心底层实现的情况下访问数据。迭代器可以理解为指向容器中元素的指针,可以通过迭代器进行元素的读取、修改等操作

#include <iostream>
#include <vector>

int main() {
   
    // 创建一个包含整数的vector
    std::vector<int> vec = {
   1, 2, 3, 4, 5};

    // 声明一个迭代器,指向vector容器的开始
    std::vector<int>::iterator it;

    // 使用迭代器遍历vector中的元素,并输出
    //这里就是输出打印
    for (it = vec.begin(); it != vec.end(); ++it) {
   
        std::cout << *it << " ";
    }

    // 输出结果:1 2 3 4 5
    return 0;
}

函数原型:

  • vector<T> v; //采用模板实现类实现,默认构造函数
  • vector(v.begin(), v.end()); //将v[begin(), end())区间中的元素拷贝给本身。
  • vector(n, elem); //构造函数将n个elem拷贝给本身。
  • vector(const vector &vec); //拷贝构造函数。

由于v.end()是指向最后一个元素的下一个,所以第二条的区间是左闭右开。

容器的构造与打印输出

#include <vector>

void printVector(vector<int>& v) {
     //将容器传进来打印。注意是引用传递

	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
   
        //用迭代器访问和遍历vector容器的元素
		cout << *it << " ";
	}
	cout << endl;
}

void test01()
{
   
    //默认构造,无参构造
	vector<int> v1;
	for (int i = 0; i < 10; i++)
	{
   
		v1.push_back(i);
	}
	printVector(v1);
    
    //区间方式构造
	vector<int> v2(v1.begin(), v1.end());//第二种构造,把两个迭代器传进去,进行构造
	printVector(v2);
    
    //n个elem构造
	vector<int> v3(10, 100);//这里的v3就是10个100,第一个是个数。第二个是赋值
	printVector(v3);
	
    //拷贝构造
	vector<int> v4(v3);
	printVector(v4);
    
    //默认构造和拷贝构造用的比较多
}

赋值

功能描述:

  • 给vector容器进行赋值

赋值常见操作

  • vector& operator=(const vector &vec);//重载等号操作符

  • assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。

  • assign(n, elem); //将n个elem拷贝赋值给本身。

#include <vector>

void printVector(vector<int>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值