我需要在矩阵或行向量中插入10个元素的数组。我要做的是将数组输入为大小为std::array<int 10>
的矩阵的一行。对于矩阵推送,每个阵列应该增长1行。对于迭代矩阵的每个步骤将是:
[1] [10] .. [2] [10] .. [3] [10]
我正在使用 new PermissionHandler(CallingActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE, new PermissionHandler.PermissionGranted() {
@Override
public void onPermissionGranted() {
doWhatever();
}
});
来构造数组。
答案 0 :(得分:2)
您可以使用以下容器std::vector<std::array<int, 10>>
这是一个示范程序
#include <iostream>
#include <iomanip>
#include <array>
#include <vector>
int main()
{
const size_t N = 10;
std::vector<std::array<int, N>> matrix;
matrix.push_back( { { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } } );
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << std::setw( 2 ) << x << ' ';
std::cout << std::endl;
}
std::cout << std::endl;
std::array<int, N> a = { { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 } };
matrix.push_back( a );
for ( const auto &row : matrix )
{
for ( int x : row ) std::cout << std::setw( 2 ) << x << ' ';
std::cout << std::endl;
}
}
程序输出
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
答案 1 :(得分:-1)
如果我理解你的问题,可能会有一个解决方案:
std::vector<std::vector<T>> my_matrix;
....
std::array<T,10> my_array;
...
std::vector<T> temp;
temp.reserve(10);
std::copy(std::begin(my_array),std::end(my_array),std::back_insertor(temp));
my_matrix.emplace_back(std::move(temp));
甚至更好:
std::vector<std::vector<T>> my_matrix;
....
std::array<T,10> my_array;
...
my_matrix.emplace_back(std::begin(my_array),std::end(my_array));