• c++学习之 vector的基础用法



    本文记录学习C++的 vector的相关知识

    一、什么是vector

    c++的vector你可以理解为一个容器,你可以往这个容器中放入东西,但是一个容器只能放同一种类型的东西,比如你这个容器是放字符型的就不能放整形数据。

    二、vector的创建和初始化

    include<iostream>
    #include
    using namespace std;
    
    int main()
    {
            vector<int> vec1;  //初始化容器,并规定类型为整形
            vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
            vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去,内容和vec2一样
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三、 vector的数据遍历

    我们会用 vec.size() 来返回你这个vector有多少的数据,一般采用for循环进行遍历;

    clude<vector>
    using namespace std;
    
    int main()
    {
            vector<int> vec1;  //初始化容器,并规定类型为整形
            vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
            vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
            printf("11111111111111111\n");
            for(int a = 0; a < vec1.size(); a++) {
                    cout << vec1[a] << endl;
            }
            printf("22222222222222222\n");
            for(int b = 0; b < vec2.size(); b++) {
                    cout << vec2[b] << endl;
            }
            printf("33333333333333333\n");
            for(int c = 0; c < vec3.size(); c++) {
                    cout << vec3[c] << endl;
            }
            printf("0000000000000000\n");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    执行后的结果

    xhh@cluo:~/study/misc$ g++ vector_study1.cpp 
    xhh@cluo:~/study/misc$ ./a.out 
    11111111111111111
    22222222222222222
    a
    a
    a
    33333333333333333
    a
    a
    a
    0000000000000000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    可以看到我们 vec1因为只是初始化没有放东西进去所以打出来是空的
    vec2我们放了三个字符, vec3 拷贝的vec2都是一样的结果

    四、 vector的数据放入

    我们可以通过 push_back();的方式将对应的东西放到对应的容器里面

    #include
    #include
    using namespace std;
    
    int main()
    {
            vector<int> vec1;  //初始化容器,并规定类型为整形
            vector<char> vec2(3,'a'); //初始化容器,并放入3个字符 a
            vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
    
            // 往 vec1中放入数据
            vec1.push_back(1);
            vec1.push_back(2);
            vec1.push_back(3);
    
            printf("11111111111111111\n");
    
            for(int a = 0; a < vec1.size(); a++) {
                    cout << vec1[a] << endl;
            }
    
            printf("22222222222222222\n");
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    执行后的结果

    xhh@cluo:~/study/misc$ g++ vector_study1.cpp 
    xhh@cluo:~/study/misc$ ./a.out 
    11111111111111111
    1
    2
    3
    22222222222222222
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、vector数据的清除

    通过 pop_back(); 去清除现在vector容器中的最后一个数据(从末尾开始清除)。
    通过 clear()来清除所有的数据,包括我们后续的所有数据。

    #include
    #include
    using namespace std;
    
    int main()
    {
    	vector<int> vec1;  //初始化容器,并规定类型为整形
    	vector<char> vec2(3, 'a'); //初始化容器
    	vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
    	vector<char> vec4; //初始化容器
    
    	// 往 vec1中放入数据
    	vec1.push_back(1);
    	vec1.push_back(2);
    	vec1.push_back(3);	
    
    	vec4.push_back('a');
    	vec4.push_back('b');
    	vec4.push_back('c');
    	vec4.push_back('d');
    	
    	for(int a = 0; a < vec1.size(); a++) {
    		cout << "vec1 =" << vec1[a] << endl;
    	}	
    	printf("============\n");
    	vec2.pop_back();  // 清除vec2倒数第一个数据
    
    	for(int b = 0; b < vec2.size(); b++) {
    		cout << "vec2 =" << vec2[b] << endl;
    	}	
    
    	printf("============\n");
    	vec3.clear(); // 清除 vec3中的所有数据
    
    	for(int c = 0; c < vec3.size(); c++) {
    		cout << "vec3 =" << vec3[c] << endl;
    	}	
    
    	
    	printf("============\n");
    	for(int d = 0; d < vec4.size(); d++) {
    		cout << "vec4 =" <<vec4[d] << endl;
    	}
    
    	printf("============\n");
    	vec4.pop_back();  // 清楚4的最后一个数据
    	
    	for(int d = 0; d < vec4.size(); d++) {
    		cout << "after pop vec4 =" <<vec4[d] << endl;
    	}	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51

    执行后

    xhh@cluo:~/study/misc$ g++ vector_study1.cpp 
    xhh@cluo:~/study/misc$ ./a.out 
    vec1 =1
    vec1 =2
    vec1 =3
    ============
    vec2 =a
    vec2 =a
    ============
    ============
    vec4 =a
    vec4 =b
    vec4 =c
    vec4 =d
    ============
    after pop vec4 =a
    after pop vec4 =b
    after pop vec4 =c
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    六、判断是不是空容器

    empty(); 用于判断是不是空的容器

    #include
    #include
    using namespace std;
    
    int main()
    {
    	vector<int> vec1;  //初始化容器,并规定类型为整形
    	vector<char> vec2(3, 'a'); //初始化容器
    	vector<char> vec3(vec2); //初始化容器,并把vec2中的数据放到vec3里面去
    	vector<char> vec4; //初始化容器
    
    	// 往 vec1中放入数据
    	vec1.push_back(1);
    	vec1.push_back(2);
    	vec1.push_back(3);	
    
    	vec4.push_back('a');
    	vec4.push_back('b');
    	vec4.push_back('c');
    	vec4.push_back('d');
    
    	if ( vec1.empty() )
    	{
    		cout << "vec1 is empty!" << endl;
    	}
    	for(int a = 0; a < vec1.size(); a++) {
    		cout << "vec1 =" << vec1[a] << endl;
    	}	
    	printf("============\n");
    	vec2.pop_back();  // 清除vec2倒数第一个数据
    
    	if ( vec2.empty() )
    	{
    		cout << "vec2 is empty!" << endl;
    	}
    	for(int b = 0; b < vec2.size(); b++) {
    		cout << "vec2 =" << vec2[b] << endl;
    	}	
    
    	printf("============\n");
    	vec3.clear(); // 清除 vec3中的所有数据
    	if ( vec3.empty() )
    	{
    		cout << "vec3 is empty!" << endl;
    	}
    	for(int c = 0; c < vec3.size(); c++) {
    		cout << "vec3 =" << vec3[c] << endl;
    	}	
    
    	
    	printf("============\n");
    	if ( vec4.empty() )
    	{
    		cout << "vec4 is empty!" << endl;
    	}
    	for(int d = 0; d < vec4.size(); d++) {
    		cout << "vec4 =" <<vec4[d] << endl;
    	}
    
    	printf("============\n");
    	vec4.pop_back(); 
    	if ( vec4.empty() )
    	{
    		cout << "vec4 is empty!" << endl;
    	}
    	for(int d = 0; d < vec4.size(); d++) {
    		cout << "after pop vec4 =" <<vec4[d] << endl;
    	}	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    执行后

    hh@cluo:~/study/misc$ g++ vector_study1.cpp 
    xhh@cluo:~/study/misc$ ./a.out 
    vec1 =1
    vec1 =2
    vec1 =3
    ============
    vec2 =a
    vec2 =a
    ============
    vec3 is empty!
    ============
    vec4 =a
    vec4 =b
    vec4 =c
    vec4 =d
    ============
    after pop vec4 =a
    after pop vec4 =b
    after pop vec4 =c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    蓝桥杯Python组知识点
    简易的Python小游戏,上班可玩一天,零基础小白可练手
    如何在Windows 10上更改默认系统字体,这里有详细步骤
    基于vue3/Vue3的组件库
    数据类型的定义
    04【单例设计模式】
    LeetCode_贪心算法_简单_409.最长回文串
    STL中list实现
    Win11电脑摄像头打开看不见,显示黑屏如何解决?
    Discourse 分类图片
  • 原文地址:https://blog.csdn.net/weixin_51178981/article/details/126765984