将数组push_back到矩阵c ++中

时间:2016-05-17 08:59:27

标签: c++ arrays matrix vector

我需要在矩阵或行向量中插入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(); } }); 来构造数组。

2 个答案:

答案 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));