数组

数组

vector容器

vector的基本概念

  • vector数据结构和数组非常相似,也称为单端数组
  • 不同之处在于数组是静态空间,而vector可以动态扩展
  • vector容器的迭代器是支持随机访问的迭代器

创建一个动态数组(动态数组在堆上创建内存):

std::vector<type> v;	//创建一个动态数组

在当前函数中构造一个对象,再将此对象复制到数组中

v.push_back({ 1,2 });	//用push_back给数组追加

动态扩展:

  • 动态数组不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间释放原空间

动态数组的使用优化:

  1. 提前为数组设置空间,省去每次扩大空间时造成的不必要的复制。
v.reserve(3);	//为数组提前创建3个空间
  1. 使用emplace_back,传递构造函数的参数列表,直接使用参数列表在动态数组的内存内创建对象,从而避免不必要的复制。
v.emplace_back(1, 2);

vector构造函数

函数原型:

  • vector<T> v; //采用模板实现类实现,默认构造函数

    std::vector<int> v;
    
  • vector(v.begin(), v.end()); //拷贝v[begin(), end())区间中的元素,是前闭后开,v.end()不包括在内

  • vector(n, elem); //构造函数将n个elem拷贝给本身。

    std::vector<char> v(10, 'a');
    
  • vector(const vector &vec); //拷贝构造函数。

    std::vector<int> vec(10, 0);
    std::vector<int> v(vec)
    

vector赋值操作

函数原型:

  • vector& operator=(const vector &vec);//重载等号操作符

    std::vector<int> v1; //无参构造
    v1.push_back(1);
    std::vector<int> v2 = v1;
    
  • assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。

    std::vector<int> v2.assign(v1.begin(), v1.end());
    
  • assign(n, elem); //将n个elem拷贝赋值给本身。

    v2.assign(10, 2);
    

静态数组(array)

创建一个静态数组(静态数组在栈上创建内存):

std::array<int, 10> data;

静态数组有边界检查。

posted @ 2025-10-13 23:48  单身喵  阅读(1)  评论(0)    收藏  举报