0%

c++容器初始化的方法

一维容器的初始化方法

具名一维容器的六种初始化方法

  1. vector<int> ilist1

    默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。

  2. vector<int> ilist2(ilist)vector<int> ilist2 = ilist

    两种方式等价 ,ilist2 初始化为ilist 的拷贝,ilist必须与ilist2 类型相同,也就是同为int的vector类型,ilist2将具有和ilist相同的容量和元素

  1. vector<int> ilist3 = {1,2,3.0,4,5,6,7} vector<int> ilist3 {1,2,3.0,4,5,6,7}

    ilist3 初始化为列表中元素的拷贝,列表中元素必须与ilist3的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。

  2. vector<int> ilist4(ilist3.begin()+2,ilist3.end()-1)int iarrayb[3]={1,2,3}; vector<int> ilist4(iarray,iarray+2)

    ilist4初始化为两个迭代器(或者数值指针)指定范围中元素的拷贝,范围中的元素类型必须与ilist4 的元素类型相容,在本例中ilist4被初始化为{3,4,5,6}。注意:由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如,用一个double的list的范围来初始化ilist4是可行的。另外由于构造函数只是读取范围中的元素进行拷贝,因此使用普通迭代器还是const迭代器来指出范围并没有区别。这种初始化方法特别适合于获取一个序列的子序列。

  3. vector<int> ilist5(7)

    默认值初始化,ilist5中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist5被初始化为包含7个0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。

  4. vector<int> ilist6(7,3);

    指定值初始化,ilist6被初始化为包含7个值为3的int

——原文链接:https://blog.csdn.net/veghlreywg/article/details/80400382

不具名一维容器临时变量的初始化并马上作为结果返回

1
2
3
4
vector<int> fun()
{
return vector<int>{1,2,3};
}

二维容器的初始化方法

初始化二维vector,长宽为row*col,所有值为0.

  1. vector<vector<int>>res(row,vector<int>(col))

    用直接初始化大小的方式

  2. resize()来控制大小

    1
    2
    3
    4
    5
    vector<vector<int> > res;
    res.resize(row);//r行
    for (int k = 0; k < row; ++k){
    res[k].resize(col);//每行为c列
    }

——原文链接:https://blog.csdn.net/sinat_36053757/article/details/71053706

初始化二维vector,指定元素内容

  1. vector<vector<char>> board = {{'X','.','.','X'},{'.','.','.','X'},{'.','.','.','X'}};

    直接初始化并指定元素