【发布时间】:2017-06-27 01:03:30
【问题描述】:
我在data[12][51] 的数组中有一个数据矩阵,它是一个 12 x 51 矩阵。
如果我有set<set<int>> rows,例如,
{(1,2,5),(3,7,8),(9,11)} 表示数据矩阵的行索引。
我想在给定这些行索引集的情况下形成矩阵,因此 (1,2,5) 的元素将是由数据矩阵的第 1 行、第 2 行和第 5 行组成的 3 x 51 矩阵。
vector<double> features[12];
for (int i = 0; i < 12; i++){
for (int j = 0; j < 51; j++){
features[i].push_back(data[i][j]);
}
}
所以在上面的部分中,features[i] 将返回整个数据矩阵的第 i' 行。并给定一个任意大小的set<set<int>> rows,
vector<vector<vector<double>>> sets;
for (auto & it : rows){
vector<vector<double>> temp;
for (int i : it){
temp.push_back(features[i]);
}
sets.push_back(temp);
}
但是当我尝试打印这样的矩阵向量时,通过,
for (int i = 0; i < sets.size(); i++){
for (int j = 0; j < sets[0].size(); j++){
for (int z = 0; z < sets[0][0].size(); z++){
cout << sets[i][j][z] << " , ";
}
cout << endl;
}
cout << " === Matrix === " << endl;
}
可执行文件冻结并停止。
那么,如果上述方法不起作用,那我该如何将一组整数转换为 3D 向量呢?
【问题讨论】:
-
欢迎来到 Stack Overflow。请花时间阅读The Tour 并参考Help Center 中的材料,您可以在这里问什么以及如何问。
-
@πάνταῥεῖ 这个问题有什么问题?我觉得很好。
-
@Clonkex 是否提供minimal reproducible example 可以用来重现所描述的行为?
-
sets[0].size();应该是sets[i].size();和sets[0][0].size()应该是sets[i][j].size() -
@πάνταῥεῖ 不,但是如果您确切地说出问题的问题而不是仅仅暗示 something 是错误的,这可能会更有帮助。 OP 不会自动知道问题出了什么问题。另外,SO 问题不提供 MCVE 是很常见的,而且它们不是必需的,仅推荐使用。有时无法提供 MCVE,但这仍然是一个好问题。并不是说你本身错了,只是说提一下 OP 应该改变什么会有所帮助。
标签: c++ arrays matrix vector set