zoukankan      html  css  js  c++  java
  • vector(未完)

    知识储备

    阅读这篇文章前,你需要知道:

    关联知识

    相关文章

    概念理解

    vector,中文名向量,其实与向量半毛钱关系没有,可以理解为一个不定长数组,即你用多少空间它开多少空间(近似),用于不知道这个数组到底要存多少个元素,但都开满会MLE的情况,或封装一些函数时。

    使用条件

    //头文件
    #include<vector>
    //命名空间
    using namespace std;
    or
    using std::vector;
    //传参
    vector<type> v;
    //type 为v这个vector所存储的元素的类型
    

    原理

    初始是一个最大容量为0的数组,当加入的元素多于其最大容量时,它会在另一个地方开一个两倍最大容量的数组,再将原数组中的元素复制进去,由于有复制操作,所以当vector存的东西极其大时,vector使很慢的建议使用类函数resize

    用法注意

    1. 并不是真正的你装一个东西,它开一个空间。
    2. 在数组下标越过其最大空间时会秒RE。
    3. 有一些操作会十分的慢,下文中将会提醒

    类函数

    构造函数

    1.

    vector<type> v;//此时v为一个空的数组且最大容量为0;
    
    int main()
    {
    	vector<int> v;
    	printf("size: %d
    max_size: %d
    number: ",v.size(),v.capacity());
    	for(vector<int>::iterator it=v.begin();it!=v.end();++it) printf("%d ",*it);
    }
    

    2.

    vector<type> v(a,b)//a,b为两个同类型的指针,且b>=a,将区间[a,b)的值给v,v的最大容量为b-a;
    
    int main()
    {
    	int a[]={0,1,2,3,4,5,6,7,8,9,10};
    	vector<int> v1(a,a+5);
    	vector<int> v2(a+5,a+11);
    	puts("v1:");
    	printf("size: %d
    max_size: %d
    number: ",v1.size(),v1.capacity());
    	for(vector<int>::iterator it=v1.begin();it!=v1.end();++it) printf("%d ",*it);
    	puts("
    ");
    	puts("v2:");
    	printf("size: %d
    max_size: %d
    number: ",v2.size(),v2.capacity());
    	for(vector<int>::iterator it=v2.begin();it!=v2.end();++it) printf("%d ",*it);
    }
    

    3.

    vector<type> v(a,b);//在v中插入a个b,v的最大容量为a;
    
    int main()
    {
    	vector<int> v(10,100);
    	printf("size: %d
    max_size: %d
    number: ",v.size(),v.capacity());
    	for(vector<int>::iterator it=v.begin();it!=v.end();++it) printf("%d ",*it);
    }
    

    4.

    vector<type> v(temp_v)//temp_v为另一个与v类型相同的vector,v的最大容量为temp_v中的元素个数。
    
    #include<cstdio>
    #include<vector>
    using namespace std;
    int main()
    {
    	vector<int> temp_v(10,100);
    	temp_v.push_back(5);
    	vector<int> v(temp_v);
    	printf("size: %d
    max_size: %d
    number: ",v.size(),v.capacity());
    	for(vector<int>::iterator it=v.begin();it!=v.end();++it) printf("%d ",*it);
    }
    

    operator =

    类似构造函数4。

    vector<int> v;
    v=temp_v;
    //将temp_v中的元素全部复制到v中,temp_v与v必须同类型;
    
    #include<cstdio>
    #include<vector>
    using namespace std;
    int main()
    {
    	vector<int> temp_v(10,100);
    	temp_v.push_back(5);
    	vector<int> v;
    	v=temp_v;
    	printf("size: %d
    max_size: %d
    number: ",v.size(),v.capacity());
    	for(vector<int>::iterator it=v.begin();it!=v.end();++it) printf("%d ",*it);
    }
    

    interator

    begin

    得到vector的头指针,相当于普通数组的数组名。

    int main()
    {
    	vector<int> v;
    	v.push_back(1);
    	v.push_back(2);
    	printf("%d",*v.begin());
    }
    

    end

    得到vector的尾指针,这是一个指向空的指针,vector的最后一个元素的地址为v.end()-1。

    int main()
    {
    	vector<int> v;
    	v.push_back(6);
    	v.push_back(7);
    	printf("%d
    ",v.end());
    	printf("%d",*(v.end()-1));
    }
    

    rbegin

    得到vector最后一个元素的指针。

    int main()
    {
    	vector<int> v;
    	v.push_back(6);
    	v.push_back(7);
    	printf("%d",*v.rbegin());
    }
    

    push_back

    用于在这个vector的尾部插入一个元素。

    vector<int> v;
    v.push_back
    

  • 相关阅读:
    (转)Maven实战(三)Eclipse构建Maven项目
    刷欢乐豆的方法
    R-pie()
    R-plot()
    10只老鼠与1000瓶药水
    资源共享
    第一只python小爬虫
    正则表达式之python实现
    马踏棋盘之贪心算法优化
    八皇后之回溯法解决
  • 原文地址:https://www.cnblogs.com/Mr-EK/p/7857929.html
Copyright © 2011-2022 走看看