初始化二维vector

这里是我遇到的一些对于二维vector容器初始化的一些问题的总结与记录,一共有一下四种情况,随时添加新的方式方法。

初始化一个二维vector,行M,列N

// 初始化一个 二维的matrix, 行M,列N,且值为0
vector<vector<int>> matrix(M,vector<int>(N));
//等价于下面的
vector<vector<int> > matrix(M); 
for(int i=0;i<M;i++) {
    matrix[i].resize(N);
}
//等价于下面的
vector< vector<int> > matrix;
matrix.resize(M);//M行
for(int i=0;i<matrix.size();i++){
    matrix[i].resize(N);//每一行都是N列
}
    
// 初始化一个 二维的matrix, 行M,列N,且值自定义为data;
vector<vector<int>> matrix(M,vector<int>(N,data));

学会用大括号初始化二维数组

//初始化空的二维vector,到底是{}还是{{}},请看最下面的两个leetcode例题
vector<vector<int>> matrix1{};
或者
vector<vector<int>> matrix1{{}};

//初始化列表
vector<vector<int>> matrix2{ {1},{1,1} };//学会用大括号初始化二维数组
matrix1.push_back({ 1,2,1 });//插入

初始化一个二维vector,行M,列不固定

vector<vector<int>>matrix(M);//M行,列数不固定

int col;
vector<int> temp;
for(int i=0;i<M;i++){
    cout<<”please input the col of ”<<i<<” row”<<endl;
    cin>>col;//确定第i行的列数
    cout<<i<<” row has ”<<col<<” col”<<” please input these”<<endl;
    for(int j=0;j<col;j++{
        int data;
        cin>>data;
        temp.push_back(data);
    }
    matrix[i]=temp;
    temp.clear();
}

初始化一个二维vector,行列都不固定

#include <iostream>
#include<vector>
using namespace std;
int main()
{
    vector<vector<int>> matrix;//行,列数不固定
    cout << "please input rows of matrix: " << endl;
    int rows;
    cin >> rows;
    matrix.resize(rows);
    int col;
    vector<int> temp;
    for (int i = 0; i < rows; i++) {
        cout << "please input the cols of " << i << "th row" << endl;
        cin >> col;//确定第i行的列数
        cout << i << "th row has " << col << " cols," << "please input these" << endl;
        for (int j = 0; j < col; j++){
            int data;
            cin >> data;
            temp.push_back(data);
        }
        matrix[i] = temp;
        temp.clear();
    }

    cout << "output matrix:" << endl;
    for (int i = 0; i < matrix.size(); i++) {
        for (int j = 0; j < matrix[i].size(); j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;
    return 0;
}
  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
初始化二维vector有几种方法可以选择,包括使用Fill Constructor和resize函数。 使用Fill Constructor的方法有两种: 1. 一步法:使用大括号初始化二维数组,指定行M和列N,并将所有元素初始化为特定的值。例如:`std::vector<std::vector<int>> matrix(M, std::vector<int>(N, 0));` 这将创建一个大小为M行N列的二维vector,并将所有元素初始化为0。 2. 两步法:先创建一个大小为N的一维vector,并将所有元素初始化为特定的值,然后使用该一维vector初始化二维vector。例如: ```cpp std::vector<int> row(N, 0); std::vector<std::vector<int>> matrix2(M, row); ``` 这将创建一个大小为M行N列的二维vector,并将所有元素初始化为0。 另一种方法是使用resize函数: 1. 使用resize函数可以创建一个大小为M行的二维vector,然后对每一行使用resize函数为其指定列数,并将所有元素初始化为特定的值。例如: ```cpp std::vector<std::vector<int>> matrix(M); for (int i = 0; i < M; i++) { matrix[i].resize(N, 0); } ``` 这将创建一个大小为M行N列的二维vector,并将所有元素初始化为0。 2. 还可以先创建一个空的二维vector,然后使用resize函数为其指定行数和列数,并将所有元素初始化为特定的值。例如: ```cpp std::vector<std::vector<int>> matrix2; matrix2.resize(M, std::vector<int>(N, 0)); ``` 这将创建一个大小为M行N列的二维vector,并将所有元素初始化为0。 请根据你的需求选择适合的方法来初始化二维vector
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值