c++ - 错误是 xmemory - 缺少 c++0x 支持?

标签 c++ visual-studio-2010 vector c++11

我制作了一个 winform 应用程序,其中我使用了 array[n][n] 类型的 vector

typedef char myarray[9][9];  
typedef vector<myarray> array3d; 

据我所知,此功能在 c++0x 中提供。我正在使用 visual studio 2010 ultimate 是因为这个导致 xmemory 出错吗?该 ide 没有显示除此之外的其他错误(即使在上面的代码所在的位置)

'Target of operator new()' : array initialization needs curly braces

指向xmemory中的这段代码

void construct(pointer _Ptr, _Ty&& _Val)
    {   // construct object at _Ptr with value _Val
    ::new ((void _FARQ *)_Ptr) _Ty(_STD forward<_Ty>(_Val));
    }

在超过 2500 行的代码中,我如何找到问题所在?

编辑:

由于 vector 似乎存在问题,所以这里是我对 vector 所做的所有操作

#include <vector>
#include <string>
#include <algorithm>

using namespace std;

typedef char myarray[9][9];
typedef string string_array[9][9];

void function2(vector<string_array>*my_3d_string_array, int d)
{
    string::iterator it;
    int j,cl;
    it=find((*my_3d_string_array)[d][j][cl].begin(),(*my_3d_string_array)[d][j][cl].end(),3);
    (*my_3d_string_array)[d][2][3].erase(it);
}

void function(vector<string_array>*my_3d_string_array, int d)
{
    (*my_3d_string_array)[d][3][4] = 2;
    function2(my_3d_string_array,d);
}

int main()
{
    myarray matrix;
    string_array string_matrix;

    std::vector<myarray>      my_3d_array;
    std::vector<string_array> my_3d_string_array;

    // fill_matrix(matrix);
    // fill_string_matrix(string_matrix)

    int d;
    function(&my_3d_string_array, d); // passing pointer to vector to a function d is the 3rd dimention

    my_3d_array.push_back(matrix);
    my_3d_string_array.push_back(string_matrix);
}

我在这里犯了一个愚蠢的错误吗?

最佳答案

容器中的元素不支持数组类型。

解决方法可能是使用 std::array<>而不是 char[]

#include <vector>
#include <array>

typedef std::array<std::array<char,4>, 6> array;
typedef std::vector<array> _3darray; 

int main()
{
    _3darray a, b;
    a = b;
}
  • g++ 4.6 喜欢
  • MSVC++ 2010 也不喜欢它:)

关于c++ - 错误是 xmemory - 缺少 c++0x 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8223312/

相关文章:

c++ - 谁能解释为什么 x 显示值 1 而不是 2

c++ - 为 C++ 定义一个错误类

c++ - 无法理解 C++ 中的枚举,它们实际上是什么?

c++ - 我如何创建一堆多维数组

python - 如何使 import os 命令在 python 脚本中工作

c++ - vector resize()、push.back()、reserve() 方法

c++ - 如何使用Boost解析ini文件

c - 在 visual studio 2010 中使用 C 时序问题

c# - 如何将 DataSource 设置为 DropDownList?

c++ - std::vector::emplace_back 比 std::vector::push_back 慢的示例?