我在代码中有这个
vector<vector<double> > times(pCount, vector<double>(5,0.0));
我的问题是,它所分配的矩阵的大小是多少?如果我需要访问其中的所有值,我该怎么办?
答案 0 :(得分:4)
您有一个pCount × 5
矩阵。第一个索引可以在0和pCount - 1
之间(包括),第二个索引可以在0到4之间(包括0和4)。所有值都初始化为0.
这是因为您正在使用std :: vector构造函数,其第一个参数是count n
(用于初始化向量的元素数),其第二个参数是一个值,即复制n
次。因此,times
是一个包含pCount
元素的向量,每个元素都是vector<double>
。这些向量中的每一个都是提供的vector<double>(5,0.0)
的副本,它由5个元素构成,每个元素都是0.0。
您可以获得任何单独的价值,例如times[3][2]
或您有什么。使用C ++ 11或更高版本,您可以迭代所有值,如下所示:
for (auto& v : times)
for (double& d : v)
d += 3.14; // or whatever
如果您不需要修改这些值,但只能访问它们,则可以删除“&”符号,或者更好地执行:&/ p>
for (const auto& v : times)
for (double d : v)
std::cout << d << ", "; // or whatever
在C ++ 11之前,你必须更加冗长,或者只使用索引:
for (int i = 0; i < pCount; ++i)
for (int j = 0; j < 5; ++j)
times[i][j] += 3.14; // or whatever
答案 1 :(得分:0)
这与[pCount][5]
double[pCount][5] = {{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.0, 0.0, 0.0}, // | pCount = 5
{0.0, 0.0, 0.0, 0.0, 0.0}, // |
{0.0, 0.0, 0.0, 0.0, 0.0}}; // |
当然,您正在使用向量,因此在创建times
后,行数和列数可以变化。
std::vector
包含operator[]
的覆盖,因此您可以使用该运算符访问数据。
auto Val = times[2][3]