如何将值分配到类似2D阵列的2D向量中
how to assign values into a 2D vector like a 2D array
有什么可以做的吗?目前我这样使用:
for( i=0;i<PU_number;i++)
{
for( j=0;j<=time_slots;j++)
myMatrix.tempVec.push_back(0.0);
myMatrix.value.push_back(myMatrix.tempVec);
myMatrix.tempVec.clear();
}
然而,它对我没有用处。有时我需要更改这个向量中的特定地址。如CCD_ 1。当我这样做的时候:
myMatrix.value[i][j]=value;
它破坏了内存,我得到了SIGABRT
、SIGSESV
和很多类似的东西。当我这么做的时候,勇气也会变得疯狂。但我需要一个合适的方法
编辑:我做了你们说的:
myMatrix.value.resize(PU_number);
for( i=0;i<PU_number;i++)
myMatrix.value[i].resize(time_slots);
然后:
for( i=0;i<PU_number;i++)
{
for( j=0;j<time_slots;j++)
{
for( k=0;k<number_of_packets;k++)
{
double r=((double) rand() / (RAND_MAX));
for( x=myMatrix.mat[i][k];x<=myMatrix.mat[i][k]+myMatrix.len[i][k];x++)
myMatrix.value[i][x]=r;
}
}
}
我在valgrind又收到了"8号无效书写"。
在通过索引访问任何值之前,有一个std::vector::resize()
函数,可用于正确设置矩阵的维度。
这是一个小样本
myMatrix.resize(PU_number);
for( i=0;i<PU_number;i++) {
myMatrix[i].resize(time_slots);
for( j=0;j<=time_slots;j++)
myMatrix[i][j] = 0.0;
}
您可以使用std::vector>像这里:
#include <vector>
#include <iostream>
int main()
{
std::vector<std::vector<int> > vec;
vec.resize(10);
for (unsigned int i = 0 ; i < vec.size(); ++i)
{
vec[i].resize(10);
}
vec[1][4] = 3;
vec[1].push_back(5)
std::cout << "vec[1][4] = " << vec[1][4] << std::endl;
std::cout << "vec[1][10] = " << vec[1][10] << std::endl;
return (0);
}
我创建了一个大小为10的向量,其中包含其他大小为10;注意,您必须使用resize来获得std::vector>的大小,但之后如果您想添加大小,可以使用vec[i].push_back(5);
相关文章:
- 库特<<恩德尔;不适用于打印 2D 阵列
- 具有可变尺寸的 C++ 2D 阵列
- 如何遍历 2D 阵列?
- 超级对撞机2D阵列:生成嵌套:包装/尺寸问题
- 动态 2D 阵列.为什么分段错误?
- 尝试使用2D阵列
- 分配给阵列时出现分段错误?黑客排名 2D 阵列 - DS.
- 如何将1D阵列访问为2D阵列
- 分配/访问2d阵列,使得2d子块是连续的
- 重新分配2D阵列并删除旧阵列
- 不使用新的动态2D阵列
- 我正在为2D阵列参数而挣扎
- 特征和巨大的密集 2D 阵列
- 使用 std::transform 在 2d C 阵列上转换为 1d C 数组
- 解除分配此特定 2D 阵列的内存
- 使用两个不同大小的一维阵列制作 2D 阵列
- 返回C 中2D阵列的对角线元素总和
- 2D阵列让我卡住了
- 用pybind11铸造2D阵列
- 我的 2D 阵列无法读取文本文件并正确输出