相关疑难解决方法(0)

为什么std :: vector和std :: array的C++ initializer_list行为不同?

码:

std::vector<int> x{1,2,3,4};
std::array<int, 4> y{{1,2,3,4}};
Run Code Online (Sandbox Code Playgroud)

为什么我需要std :: array的双花括号?

c++ stl c++11

67
推荐指数
2
解决办法
5149
查看次数

多维std :: array

在C++中,如何创建多维std::array?我试过这个:

std::array<std::array<int, 3>, 3> arr = {{5, 8, 2}, {8, 3, 1}, {5, 3, 9}};
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我做错了什么,如何解决这个问题?

c++ stl

48
推荐指数
1
解决办法
5万
查看次数

为什么用 C++ std::array 创建二维数组需要一对额外的 {}

要使用 std::vector 创建二维数组,您可以

vector<vector<int>> array2d = {{1, 2,  3,  4},
                               {5, 6,  7,  8},
                               {9, 10, 11, 12}};
Run Code Online (Sandbox Code Playgroud)

外层 {} 代表外层向量;内部 {},内部向量。

但是,要使用 std::array 创建二维数组,您需要执行以下操作

array<array<int,4>, 3> array2d = {{{1, 2,  3,  4},
                                   {5, 6,  7,  8},
                                   {9, 10, 11, 12}}};
Run Code Online (Sandbox Code Playgroud)

为什么 std::array 的 std::array 需要一对额外的封闭 {}?

c++ stdarray

14
推荐指数
0
解决办法
120
查看次数

为什么不能用两层list-initializers初始化2D std :: array?

有人可以帮助我理解为什么我的编译器不能/不推断这个?(使用g ++ 7.3)

不起作用:

#include <array>
std::array<std::array<double,2>,2> f() {
 return {{0,0},{0,0}};
}
Run Code Online (Sandbox Code Playgroud)

工作良好:

#include <array>
std::array<std::array<double,2>,2> f() {
 return {std::array<double,2>{0,0},{0,0}};
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这也失败了:

#include <array>
std::array<std::array<double,2>,2> f() {
 return std::array<std::array<double,2>,2>{{0,0},{0,0}};
}
Run Code Online (Sandbox Code Playgroud)

@ 1201ProgramAlarm指出添加另一组花括号有效:

#include <array>
std::array<std::array<double,2>,2> f() {
 return {{{0,0},{0,0}}};
}
Run Code Online (Sandbox Code Playgroud)

它使用聚合初始化,因为std::array没有用于brace-init-list的构造函数.那没关系,但那么为什么/如何运作?

std::array<double,2> x{1,2};
Run Code Online (Sandbox Code Playgroud)

为什么它处理这种情况但不处理嵌套的情况?

c++ list-initialization stdarray

9
推荐指数
1
解决办法
215
查看次数

std 数组 - 太多初始值设定项

我不明白为什么这里说“太多初始化程序”

#include <iostream>
#include <array>

typedef std::array<std::array<double, 3>, 3> matrix;

int main()
{
  matrix mat = {
      { 1.0, 0.0, 472.3672 },
      { 1.0, 0.0, 472.3672 },
      { 1.0, 0.0, 472.3672 }
    };
}
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

c++

5
推荐指数
0
解决办法
1715
查看次数

如何声明 2d std::array

我想使用 2d std::array 因为我必须在程序中的某个点使用绑定检查。对于一维数组,我会这样做:

#include <iostream>
#include <array>
int main (){
  std::array<int,4> myarray;
  for (int i=0; i<10; i++){
     myarray.at(i) = i+1;    
  }
}
Run Code Online (Sandbox Code Playgroud)

我如何为二维数组做到这一点。我可以在其中使用 auto 吗?

c++ stdarray

4
推荐指数
1
解决办法
6865
查看次数

标签 统计

c++ ×6

stdarray ×3

stl ×2

c++11 ×1

list-initialization ×1