初学C++之 vector容器

文章目录

  • 一. 定义
  • 二. 代码示例
  • 三. 其它成员函数
    • 3.1 定位函数
    • 3.2 增加元素的函数
    • 3.3 删除元素的函数
    • 3.4 判断容器大小

vector是一个封装了动态数组的顺序容器,跟其它类型的容器一样,它能够存放各种数据类型的数组和对象,
优点:根据需要自动调整大小, 随时放入更多元素,自身拥有更多的成员函数.

一. 定义

#include
using namespace std;

int main() {
     
	vector<int> vi; //定义一个存入整形数据的容器.
}

vector容器可以存放C语言的基本数据类型,还可以存放结构体,类. 链表不常用

二. 代码示例

经验证, 可以g++编译运行出结果

#include
#include
#include
#include  // string需要包含的头文件
#include  // vector 需要	包含的头文件
#include  // sort 需要包含的头文件

using namespace std;


int main() {
     
    char height=0;
    vector<int> vheight;

    while(1){
     
        printf("请输入身高(0-结束):");
        scanf("%d", &height);
        if(height==0) break;
        vheight.push_back(height);  // 把数据追加至容器中, 类似于python中的append
    }

    for(int ii=0; ii<vheight.size(); ii++){
     
        printf("vheight[%d] = %d\n", ii, vheight[ii]);
    }
    sort(vheight.begin(), vheight.end()); // 升序排列

    for(int ii=0; ii<vheight.size(); ii++){
     
        printf("vheight[%d] = %d\n", ii, vheight[ii]);
    }


    vheight.clear();  // 清空容器.

}

代码解释:
void push_back(const T& c) 成员函数,向容器尾部追加一个元素x, 注意x是一个引用,要用的变量的名称,不是变量的地址,

int size() 成员函数: 返回容器中数据的元素总数

像数组一样访问容器.采用数据下标的方式来访问容器内部的元素.

iterator begin() :返回容器的头指针, 指向第一个元素
iterator end(): 返回容器的尾指针, 指向最后一个元素的下一个位置

sort() 函数是对容器中的元素进行排序.

void clear(): 对容器进行清空元素的操作. 1: 容器被声明时,本身就是空的,2: 容器是类,有析构函数,将会自动释放内存资源, 这里手动清空了容器的元素.

在实际开发中, 最常用的是用来存入结构体

#include
#include
#include
#include
#include  // vector 需要的包含的头文件
#include

using namespace std;
struct st_girl{
     
    char name[50];
    int age;
};


int main() {
     
    struct st_girl stgirl;  // 数据结构
    vector<struct st_girl> vgirl;  // 容器

    strcpy(stgirl.name, "张大"), stgirl.age=19;
    vgirl.push_back(stgirl);
    strcpy(stgirl.name, "张二"), stgirl.age=20;
    vgirl.push_back(stgirl);
    strcpy(stgirl.name, "张三"), stgirl.age=21;
    vgirl.insert(vgirl.begin()+1, strgirl);  // 在第二个位置之前插入一个元素

    //使用下标访问容器中的数据
    for(int ii=0; ii<vgirl.size(); ii++){
     
        printf("vgirl[%d].name=%s, vgirl[%d].age=%d\n", ii, vgirl[ii].name, ii, vgirl[ii].age);
    }
	
	vgirl.erase(vgirl.begin()+2);  // 删除第3个位置上的元素.
	vgirl.pop_back();  //删除最后一个元素
    printf("******************\n");
    // 把容器中的记录复制到结构体中
    for(int ii=0; ii<vgirl.size(); ii++){
     
        memcpy(&stgirl, &vgirl[ii], sizeof(struct st_girl));
        printf("stgirl.name=%s, stgirl.age=%d\n", stgirl.name, stgirl.age);
    }
    vgirl.clear(); // 清空全部元素
    return 0;
}

三. 其它成员函数

3.1 定位函数

  • iterator begin() :返回容器的头指针, 指向第一个元素
  • iterator end(): 返回容器的尾指针, 指向最后一个元素的下一个位置

iterator 迭代器, python中的迭代器关键字一样的

3.2 增加元素的函数

  • void push_back(): 追加元素
  • iterator insert(iterator it, const T& x): 向容器中指定位置前插入一个元素x

3.3 删除元素的函数

  • iterator erase(iterator it): 容器中删除指定位置(it)的元素
  • void pop_back(); : //删除最后一个元素
  • void clear(): 清空元素

3.4 判断容器大小

  • bool empty() : 判断容器是否为空
  • int size() : 返回容器中元素的个数

你可能感兴趣的:(C/C++学习,vector,容器)