C++中具有用户定义大小的2D矢量vector

本文概述2D向量是
向量
向量。像2D数组一样, 我们可以声明值并将其分配给2D向量!
假设你熟悉C ++中的法向矢量, 在一个示例的帮助下, 我们演示了2D向量与以下法向矢量的不同之处:
CPP

// CPP program #include < iostream> /* Vectors belong to a C++ library called STL so we need to import it first! */ #include < vector> using namespace std; int main() { /* In the case of a normal vector we initialize it as:1. vector< datatype> variable_nameNow in the case of a 2D vector all we do is create a vector of datatype vector.We simply replace "datatype" with "vector< int> ":1. vector< vector< int> > variable_nameThat's literally it! We just created a 2D vector! On line 23 below we declare an actual 2D vector named "vect". */vector< vector< int > > vect; return 0; }

在2D向量中, 每个元素都是一个向量。
CPP
/* C++ code to demonstrate a 2D vector with elements(vectors) inside it. */ #include < iostream> #include < vector> using namespace std; int main() { /* Below we initialize a 2D vector named "vect" on line 12 and then we declare the values on line 14, 15 and 16 respectively. */vector< vector< int > > vect { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; /* Now we print the values that we just declared on lines 14, 15 and 16 using a simple nested for loop. */for ( int i = 0; i < vect.size(); i++) { for ( int j = 0; j < vect[i].size(); j++) { cout < < vect[i][j] < < " " ; } cout < < endl; } return 0; }

输出:
1 2 3 4 5 6 7 8 9

喜欢Java的锯齿状数组, 二维向量的每个元素可以包含不同数量的值。
CPP
/* C++ program to demonstrate a 2D vector where each of its elements is of different size. */ #include < iostream> #include < vector> using namespace std; int main() { /* We initialize a 2D vector named "vect" on line 16 with different number of values in each element. */vector< vector< int > > vect { /* Element one with 2 values in it. */ {1, 2}, /* Element two with 3 values in it. */ {4, 5, 6}, /* Element three with 4 values in it. */ {7, 8, 9, 10} }; /* Now we print the vector that we just defined using a simple nested for loop. */for ( int i = 0; i < vect.size(); i++) { for ( int j = 0; j < vect[i].size(); j++) { cout < < vect[i][j] < < " " ; } cout < < endl; } return 0; }

输出:
1 2 4 5 6 7 8 9 10

运动题:
用不同大小的列定义2D向量。
例子:
Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1Input : Number of rows : 3 Number of columns in rows : 3 2 1Output : 1 2 3 1 2 1

2D向量通常被视为内部带有"行"和"列"的矩阵。实际上, 它们实际上是2D矢量的元素。
我们首先声明一个名为" row"的整数变量, 然后声明一个名为" column"的数组, 该数组将保存每行大小的值。
之后, 我们将根据列的大小来初始化每一行的内存。
CPP
/* C++ program to create a 2D vector where every row has a certain number of values as defined by the user.(On line 13) */ #include < iostream> #include < vector> using namespace std; int main() {/* Here we tell how many rows the 2D vector is going to have. */ int row = 5; /* We define the number of values each row is supposed to have. */ int colom[] = {5, 3, 4, 2, 1}; /* We now create a vector of vector with size equal to row. */vector< vector< int > > vec(row); /* On line 21 we created a 2D vector and assinged it a capacity of "row"(in this case 5) units. *//* Now we will proceed to create the sturture of our 2D vector by assigning the value of rows and columns through a nested for loop. */ for ( int i = 0; i < row; i++) { /* Declaring the size of the column. */ int col = colom[i]; /* On the 43rd line we declare the i-th row to the size of the column. We create a normal vector of capacity "col" which in every iteration of the for loop will define the values inside of each row. */ vec[i] = vector< int > (col); for ( int j = 0; j < col; j++) { vec[i][j] = j + 1; } }/* We now finally use a simple nested for loop to print the 2D vector that we just created above. */ for ( int i = 0; i < row; i++) { for ( int j = 0; j < vec[i].size(); j++) { cout < < vec[i][j] < < " " ; } cout < < endl; } return 0; }

输出如下:
1 2 3 4 5 1 2 3 1 2 3 4 1 2 1

另一种方法
假设我们要初始化一个2D向量
" n"
行和
" m"
列, 值为0。
CPP
// CPP program #include < iostream> #include < vector> using namespace std; int main() { int n = 3; int m = 4; /* We create a 2D vector containing "n" elements each having the value "vector< int> (m, 0)". "vector< int> (m, 0)" means a vector having "m" elements each of value "0". Here these elements are vectors. */ vector< vector< int > > vec( n , vector< int > (m, 0)); for ( int i = 0; i < n; i++) { for ( int j = 0; j < m; j++) { cout < < vec[i][j] < < " " ; } cout< < endl; }return 0; }

输出如下:
0 0 0 0 0 0 0 0 0 0 0 0

另一种方法:
假设我们要创建一个2D向量
" n"
行和
" b"
列和输入值。
CPP
// CPP program #include < iostream> #include < vector> using namespace std; int main() { int n = 4; int m = 5; /* Create a vector containing "n" vectors each of size "m". */ vector< vector< int > > vec( n , vector< int > (m)); for ( int i = 0; i < n; i++) { for ( int j = 0; j < m; j++) { vec[i][j] = j + i + 1; } } for ( int i = 0; i < n; i++) { for ( int j = 0; j < m; j++) { cout < < vec[i][j] < < " " ; } cout < < endl; }return 0; }

输出如下:
1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8

【C++中具有用户定义大小的2D矢量vector】被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C ++ STL通过激烈的问题解决过程来训练和掌握这些概念。

    推荐阅读