C++ 学习日志——Vector容器

本文简单介绍vector容器的 构造方法、赋值、插入和删除等

目录

一、vector构造函数

二、vcetor赋值操作和容量大小

三、vcetor插入和删除

四、数据存取和容器数据互换


一、vector构造函数

        vector数据结构和数组非常相似,也称为单端数组 ,不同之处在于数组是静态空间,而vector可以动态扩展

函数原型

  • vector<T> v; //采用模板实现类实现,默认构造函数

  • vector(v.begin(), v.end()); //将v[begin(), end())区间中的元素拷贝给本身。

  • vector(n, elem); //构造函数将n个elem拷贝给本身。

  • vector(const vector &vec); //拷贝构造函数。

void test() {
    vector<int> v;
	for (int i = 0; i < 10; i++) {
		v.push_back(i);
		
	}
	//通过区间的方式进行构造
	vector<int>v2(v.begin(),v.end());

	//n个elem构造
	vector<int>v3(10, 100);

	//拷贝构造
	vector<int> v4(v3);
}

二、vcetor赋值操作和容量大小

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

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

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

void test2() {
	vector<int> v1;
	for (int i = 0; i < 10; i++)
		v1.push_back(i);

	vector <int> v2;
	v2 = v1;

	vector<int> v3;
	v3.assign(v2.begin(),v2.end());

	vector<int> v4;
	v4.assign(10,999);
}
  • empty(); //判断容器是否为空

  • capacity(); //容器的容量

  • size(); //返回容器中元素的个数

  • resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

    //如果容器变短,则末尾超出容器长度的元素被删除。

  • resize(int num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

    //如果容器变短,则末尾超出容器长度的元素被删除

三、vcetor插入和删除

  • push_back(ele); //尾部插入元素ele

  • pop_back(); //删除最后一个元素

  • insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele

  • insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count个元素ele

  • erase(const_iterator pos); //删除迭代器指向的元素

  • erase(const_iterator start, const_iterator end);//删除迭代器从start到end之间的元素

  • clear(); //删除容器中所有元素


void test1() {
	vector<int> v;
	//尾插法
	for (int i = 0; i < 10; i++)
		v.push_back(i);
	//尾删
	v.pop_back();

	//插入
	v.insert(v.begin(), 10);

	//插入n个数
	v.insert(v.begin(),2,999);

	//删除
	v.erase(v.begin());

	//清空
	v.erase(v.begin(),v.end());
}

四、数据存取和容器数据互换

  • at(int idx); //返回索引idx所指的数据

  • operator[]; //返回索引idx所指的数据

  • front(); //返回容器中第一个数据元素

  • back(); //返回容器中最后一个数据元素


void test1() {
	vector<int> v;
	for (int i = 0; i < 10; i++)
		v.push_back(i);

	//中括号访问数据
	for (int i = 0; i < v.size(); i++) {
		cout << v[i]<<"  ";
	}

	cout << endl;

	//at访问
	for (int i = 0; i < v.size(); i++) {
		cout << v.at(i)<<" " ;
	}

	cout << endl;
	//获取第一个元素
	cout<<v.front() <<endl;

	//获取最后一个元素
	cout << v.back() << endl;
}
  • swap(vec); // 实现两个容器内元素的互换

void test3() {
	vector<int> v;
    vector<int> v2;

	for (int i = 0; i < 10; i++) {
		v.push_back(i);
	}
	for (int i = 10; i <20; i++) {
		v2.push_back(i);
	}

	myPrint(v);
    myPrint(v2);

	v.swap(v2);
    //交换后
	myPrint(v);
	myPrint(v2);
}

猜你喜欢

转载自blog.csdn.net/qq_53734051/article/details/126675135