从 2 个 1D 矢量创建 2D 矢量
Create 2D vector from 2 1D vectors
我对向量相当陌生,我正在尝试从 2 个 1D 向量中填充坐标点的 2D 向量。我有 2 个这样的向量,其中 source_x 和 source_y 包含文件中的值:
std::vector<float,T<float>> pos_x(5);
std::vector<float,T<float>> pos_y(5);
for (int i = 0; i < 5 ; i++){
pos_x[i] = i+1; //{1,2,3,4,5}
}
for (int i = 0; i < num ; i++){
pos_y[i] = i+1 ; //{1,2,3,4,5}
}
我像这样创建了我的 2D 矢量:
std::vector<std::vector<float, T<float>>> position;
for (int i = 0; i < num ; i++){
for (int j = 0; j < num ; i++){
//Output expected: {{1,2,3,4,5},{1,2,3,4,5}}
position[i][j] = //I'm confuse here
}
}
我不确定如何填充pos_x定位[i]和pos_y定位[J].
谢谢
所以我的猜测是这样的
std::vector<std::vector<float>> position(num, std::vector<float>(2));
for (int i = 0; i < num ; i++){
position[i][0] = pos_x[i];
position[i][1] = pos_y[i];
}
但我很容易错。
根据问题中的示例进行更新,我现在认为这是正确的代码
std::vector<std::vector<float>> position(2, std::vector<float>(num));
for (int i = 0; i < num ; i++){
position[0][i] = pos_x[i];
position[1][i] = pos_y[i];
}
没有 2D 矢量这样的东西。事实是,您可以创建一个包含向量的向量。第一个向量用作收集的向量中的索引。
请注意,此概念类似于 2D 数组:arr[3][4]
表示 3 个索引,每个索引指向 4 个数据。
要创建此类 2D 矢量,请执行以下操作:
std::vector< std::vector <float>> positions.
请注意,我没有使用第二个参数(如std::vector<float, SomeAllocator>
,因为我们不需要这个自定义内存分配器。
另请注意,与数组相反,我没有告诉每个向量的大小,因为 std::vector 会处理它。
让我们填充它。
"主"向量包含向量。因此,这些次要向量可以在存储在"主"向量之前创建。
std::vector<float> v1; //secondary
positions.push_back(v1); //add it to main vector
在辅助中放置一些值:
v1.push_back(7.5);
v1.push_back(-3.1);
另一种方法是通过主向量访问。如果我们新这个主向量在其第一个索引中包含v1
:
positions[0].push_back(8.); // same as v1.push_back(8.) if positions[0] refers to v1
或者更好地使用"at":positions.at(0).push_back(8.);
更改一些值:
v1.at(1) = 66.88;
或
positions[0].at(1) = 66.88;
您也可以执行v1[1] = 66.88
但更喜欢at()
方法,因为它将检查向量 v1 的大小是否允许索引"1"。
您可以创建并添加另一个辅助向量:
std::vector<float> v2; //secondary
positions.push_back(v2); //add it to main vector
并像以前的v1
一样使用它.现在,positions[1]
指的是v2
我把从其他向量拉动的其余部分留给你。
相关文章:
- 读取字符串文本输入以创建 2D 矢量
- 如何使用 DXGI 格式DXGI_FORMAT_R1_UNORM创建 2D 纹理?
- 从 2 个 1D 矢量创建 2D 矢量
- 不明白使用双指针 (**) 创建 2d 动态数组
- 创建 2D 数组0xCCCCCCCC访问冲突写入位置
- 如何在C++中创建 2d 数组,其中一部分包含循环计数器,另一部分包含数字列表?
- C++ 如何创建 2D 数组,将其传递给另一个函数,然后打印
- 创建 2D 数组类:如何访问 2D 数组类(如 array[x][y))中的元素
- C++ - 创建 2D 复制构造函数
- 如何在其中创建2D字符串向量并插入数据
- 使用来自C 参数的大小创建2D数组
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- 如何使用矢量创建 2D 数组
- 动态创建 2D 数组时使用的大小
- 从文本文件创建 2D 字符串矢量
- 从 1D 数组创建 2D 数组
- C++以内存安全的方式使用给定向量的大小创建2D阵列
- C++ 如何动态创建 2D 矢量
- 创建2D数组时出现异常:在C++中重新抛出之前进行清理
- 基于命令行输入创建 2D 数组