vector—C++笔记

vector—C++笔记

#include<iostream>
#include<vector>
using namespace std;

void test(){
	//创建一个vector容器,数组
	vector<int> v;
	//向容器中插入数据(尾插)
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);
	//尾删
	v.pop_back();  //10 20 30 
	//插入 第一个参数的迭代器
	v.insert(v.begin(),100);  //100 10 20 30 (在第一个位置插)
	v.insert(v.begin(),2,1000);  //1000 1000 100 10 20 30(插两个1000)
	v.insert(v.begin()+1,2);   //1000 2 1000 100 10 20 30(在第二个位置插)
	
	//删除 参数也是迭代器
	v.erase(v.begin());  //10 20 30
	v.erase(v.begin(),v.end()); //左闭右开,删除全部==v.clear();
	
	vector<vector<int> >num = 
        { {1,1,1,0,1,1},{1,0,1,1,1,1},{1,1,1,0,0,1},{1,0,1,0,0,1},{1,1,1,1,1,1} };

	
	vector<int>v1;  //若里面有10 20 30 40
	//构造同时赋值
	vector<int>v2(v1); //v2: 10 20 30 40 
	vector<int>v3(v1.begin()+1,v1.end()); //v3: 20 30 40(用区间赋值)
	vector<int>v4(4,100);  //v4: 100 100 100 100 (4个100)
	vector<int>v5(4); //声明v5大小为4 内容默认为 0 0 0 0  
	cout<<v5[0]; //0
	{若只 vector<int>v5; 直接访问 v5[0] 会报错,除非访问前插入元素}

	//容量和大小
	vector<int>v1; //若里面有0 1 2 3 4 5 6 7 8 9 
	//v1.empty() 为真 代表容器为空
	v1.capacity();  // v1容量:13 (系统开辟的,capacity>=size)
	v1.size();  //10 (v1里面有10个元素)
//	v1.resize(15); //0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 (默认填0)
	v1.resize(15,100); //0 1 2 3 4 5 6 7 8 9 100 100 100 100 100
	v1.resize(5); //0 1 2 3 4 超出部分被删


	//交换容器
	vector<int>v1; //里面有0 1 2 3 4 5 6 7 8 9 
	vector<int>v2; //里面有10 9 8 7 6 5 4 3 2 1
	v1.swap(v2);  //v1 : 10 9 8 7 6 5 4 3 2 1
				  //v2 : 0 1 2 3 4 5 6 7 8 9 
	{扩展:巧用swap收缩内存
		若v1中存10000个数。。。。
		v1.capacity(); //13825 
		v1.size(); //10000
		v1.resize(3);  //缩小
		v1.capacity(); //13825   仍然占内存。。。。。
		v1.size(); //3   
		vector<int>(v1).swap(v1);  //*******
		v1.capacity(); //3   收缩内存
		v1.size(); //3  
	}


	//遍历(个人感觉最好)
	//一维
	for(int i=0;i<v1.size();i++){
	   	cout<<v1[i]<<" ";
	}
	
	//二维
	vector<vector<char>> matrix; //matrix中已存入一些数了,这里随便举个例子
	int rows = matrix.size(), columns = matrix[0].size();
    vector<vector<int>> dp(rows, vector<int>(columns));

        for(int i=0;i<rows;i++){
            for(int j=0;j<columns;j++){
                dp[i][j]=matrix[i][j]-'0';  //将matrix中char型转成int型
            }
        }

}

遍历另外的方法

	//第一种遍历方式
	//通过迭代器访问容器中的数据
	vector<int>::iterator itBegin = v.begin();//起始迭代器,指向容器中第一个元素
	vector<int>::iterator itEnd = v.end();//结束迭代器,指向容器中最后一个元素的下一个位置
	while(itBegin != itEnd)
	{
		cout<<*itBegin<<endl;
		itBegin++;
	}
	//第二种遍历方式
	for(vector<int>::iterator it=v.begin();it != v.end();it++){
		cout<<*it<<endl;
	}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值