1、引言
C++中容器vector非常常见,有时候需要事先定义其容器的长度,其中包括一维、二维容器长度的定义,其中二维容器定义可以用于存储二维数组,用于点云数据组织,分块处理等,下面分别介绍一维与二维容器的初始化。
2、代码示例:
2.1 一维容器(vector<>)
直接使用resize()函数进行初始化
#include<iostream>
#include<vector>
using namespace std;
void main()
{
vector<double> arr;
arr.resize(3);
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
for (int i = 0; i < arr.size(); i++)
{
cout << arr[i] << "\t";
}
system("pause");
}
2.2 二维容器(vector<vector<>>)
第一维使用resize(),后续中对之前的每一维再次使用resize()进行初始化
#include<iostream>
using namespace std;
#include<vector>
void main()
{
double rows = 5;
double cols = 2;
vector<vector<double>> arr;
arr.resize(5);
for (int i = 0; i < rows; i++)
{
arr[i].resize(cols);
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j] = 2;
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
cout << arr[i][j] << " ";
}
cout << endl;
}
system("pause");
}
?
?*****如果容器中装有复杂的结构体,直接替换就行,如下所示:
#include<iostream>
using namespace std;
#include<vector>
void main()
{
struct myunit
{
vector<double> mynumber;
};
double rows = 5;
double cols = 2;
vector<vector<myunit>> arr;
arr.resize(5);
for (int i = 0; i < rows; i++)
{
arr[i].resize(cols);
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
arr[i][j].mynumber.push_back(1);
}
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
for (int k = 0; k < arr[i][j].mynumber.size(); k++)
{
cout << arr[i][j].mynumber[k] << " ";
}
}
cout << endl;
}
system("pause");
}
?
|