如何在C++ STL中初始化3D向量
C ++中的向量与动态大小的数组相同,具有调整大小的能力,可以从末尾插入和删除元素。
3D向量
3D向量是一种具有3个维度的向量类型,表示在其内部存储2D向量,类似于2D数组。
有几种方法可以初始化3D向量,它们是:
- 标准初始化3D向量
- 给定尺寸的3D向量初始化。
- 为3D向量初始化一些值
1.标准初始化3D向量
标准初始化3D向量是一种通过声明并使用push_back()函数插入元素来初始化的方法。
语法:
vector<vector<vector<data_type>>> vector_name;
示例:
// C++ program to initialise
// 3D vector using Standard
// initialization of a 3D vector
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// Initialising an empty 3D vector
vector<vector<vector<int> > > v;
// Adding values to the vector
v.push_back({ { 1, 2, 3 }, { 3, 2, 1 } });
v.push_back({ { 4, 5, 6 }, { 6, 5, 4 } });
// Printing the 3d vector
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < v[i].size(); j++) {
for (int k = 0; k < v[i][j].size(); k++) {
cout << v[i][j][k] << " ";
}
cout << endl;
}
}
return 0;
}
输出
1 2 3
3 2 1
4 5 6
6 5 4
2.给定尺寸的3D向量初始化
以下是在C++中使用给定大小初始化3D向量的语法。初始化值默认为0,因此可以通过遍历循环来分配不同的值。
语法:
vector<vector<vector<data_type>>> vector_name(x, vector<vector<data_type>>(y, vector<data_type>(z)));
这里x,y和z是维度。
示例:
// C++ program to initialise
// 3D vector Initialization
// of a 3D vector with
// given dimensions
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// Initialising a 3D vector with 0 as initial value
vector<vector<vector<int> > > v(
2, vector<vector<int> >(3, vector<int>(4)));
// Printing the 3d vector
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < v[i].size(); j++) {
for (int k = 0; k < v[i][j].size(); k++) {
cout << v[i][j][k] << " ";
}
cout << endl;
}
}
return 0;
}
输出
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
3.为3D向量初始化一些值
在此方法中,我们使用一些值创建具有x,y和z维度的向量。
语法:
vector<vector<vector<data_type>>> vector_name(x, vector<vector<data_type>>(y, vector<data_type>(z,value)));
示例:
// C++程序初始化
// 3D向量初始化为
// 带有某个值的3D向量
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//用0的初始值初始化3D向量
vector<vector<vector<int> > > v(
2, vector<vector<int> >(3, vector<int>(4, 2)));
//打印3d向量
for (int i = 0; i < v.size(); i++) {
for (int j = 0; j < v[i].size(); j++) {
for (int k = 0; k < v[i][j].size(); k++) {
cout << v[i][j][k] << " ";
}
cout << endl;
}
}
return 0;
}
输出
2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2
2 2 2 2