C++学习笔记基础篇31——C++容器之动态数组vector

    科技2024-06-14  75

    定义vector对象的时候先不用指定数组的大小,有数据的话就往数组里面插入就可以了。vector内部自己管理存储空间。

    文章目录

    vector 的头文件和命名空间:vector 的定义:vector 的初始化:vector 的的常用基本操作使用实例

    vector 的头文件和命名空间:

    #include <vector> //注意,没有 .h using namespace std; //在 std 标准命名空间中

    vector 的定义:

    vector<int> arr_int; //定义了一个内部元素是int的动态数组; vector<char> arr_char; //定义了一个内部元素是char的动态数组; vector<CStudent> arr_student; //定义了一个内部元素是CStudent的动态数组; vector<char*> arr_pchar; //定义了一个内部元素是char*的动态数组;

    vector 的初始化:

    #include <vector> int main (int argc, char* argv[]) { std::vector<int> one; //定义一个空的、元素类型是 int 的 vector 动态数组 std::vector<int> two(4,100); //定义一个包含4个元素,每个元素的值都是100的 vector 动态数组 std::vector<int> three(two.begin(),two.end()); //使用 two 这个对象的迭代器,从开始到结束的所有元素来初始化当前对象 std::vector<int> four(three); // 使用 three 这个对象来初始化当前对象 int myints[] = {16,2,77,29}; std::vector<int> five (myints, myints + sizeof(myints) / sizeof(int) ); //使用一个普通的 int 数组来初始化当前对象 return 0; }

    vector 的的常用基本操作

    ① arr_int[idx] 或 arr_int.at(idx) //返回动态数组中下标为 idx 的 arr_int[idx] 元素的值 ② arr_int.size(); //返回 arr_int 数组元素的总个数 ③ arr_int.front(); //返回 arr_int 数组的第一个元素的值 ④ arr_int.back(); //返回 arr_int 数组的最后一个元素的值 ⑤ arr_int.clear(); //清空 arr_int 数组,即把里面的所有元素都删除 ⑥ arr_int.begin(); //返回 arr_int 数组第一个数的下标 ⑦ arr_int.end(); //返回 arr_int 数组最后一个数的下标 ⑧ arr_int.empty(); //判断 arr_int 数组是否为空,如果为空则返回true,非空(有元素)则返回false ⑨ arr_int.swap(v1); //v1是另一个动态数组,将 arr_int 和 v1 两个动态数组的元素互换swap(arr_int, v1); //同⑨

    使用实例

    #include <vector> //注意,没有 .h #include<iostream> using namespace std; //在 std 标准命名空间中 int main(int argc, char* argv[]) { int szint[5] = {1,2,3,4,5}; //vector是动态数组,是个模板,可以适用于任何类型, //初始化 vector<int> arr_int; vector<int> second(4,100); vector<int> third(second); vector<int> forth=second; vector<int> fivth(third.begin(),third.end()); vector<int> six(szint, szint + sizeof(szint) / sizeof(int)); int a=fivth.at(2); //插入 six.push_back(100);//在vector的最后插入100 six.insert(six.begin() + 2, 666);//在six下标为2的地方插入666 fivth.insert(fivth.begin() + 3, 3, 666);//在fivth下标为3的地方插入3个666 forth.insert(forth.begin()+2, szint, szint + sizeof(szint) / sizeof(int));//插入数组 //删除 forth.pop_back();//删除最后一个元素 fivth._Pop_back_n(3);//删除最后三个元素 forth.erase(forth.begin() + 1);//删除某个下标的元素 forth.erase(forth.begin() + 1, forth.begin() + 2);//删除某个区域的元素【), // //前一个下标会被删除,后一个下标不会 //遍历 //下标遍历 for (int idx = 0; idx < six.size(); idx++) { int value = six[idx]; cout << value << ","; } cout << endl; //迭代器遍历,类似于指针 vector<int>::iterator itor; for (itor = six.begin(); itor != six.end();itor++) { int value = *itor; cout << value << ","; } system("pause"); return 0; }
    Processed: 0.016, SQL: 8