将数组推送到向量会产生错误

时间:2013-07-03 07:39:28

标签: c++ arrays c++11

我试图用一些数组填充矢量。 这段代码有什么问题?

#include <vector>
#include <array>
using namespace std;

int main(){

    double p[10]{1,2,3,4,5,6,7,8,9,10};
    vector<double[10]> p_prev;

    p_prev.push_back(p);

    return 0;
}

我正在使用g++ -std=c++11进行编译。

error: request for member '~ double[10]' in '* __p', which is of non-class type 'double[10]'

如何正确推动?

2 个答案:

答案 0 :(得分:2)

数组不符合容器元素的要求。试试std :: array:

#include <vector>
#include <array>
using namespace std;

int main(){

    std::array<double, 10> p{1,2,3,4,5,6,7,8,9,10};
    vector<std::array<double, 10> > p_prev;

    p_prev.push_back(p);

    return 0;
}

答案 1 :(得分:2)

您无法将C样式数组存储在vector或任何其他容器中。因为对于要存储在vector中的类型,它需要是“可分配的”,但是C风格的数组不能满足这一要求。

改为使用std::array