相关疑难解决方法(0)

如何使用initializer_list初始化成员数组?

我正在快速使用C++ 0x,并使用g ++ 4.6进行测试

我只是尝试了下面的代码,认为它会工作,但它不会编译.我收到错误:

incompatible types in assignment of ‘std::initializer_list<const int>’ to ‘const int [2]’

struct Foo
  {
    int const data[2];

    Foo(std::initializer_list<int const>& ini)
    : data(ini)
    {}
  };

Foo f = {1,3};
Run Code Online (Sandbox Code Playgroud)

c++ arrays initializer-list c++11

50
推荐指数
4
解决办法
3万
查看次数

我该怎么做来初始化一个结构的数组

我用下面的方法初始化一个CandyBar结构数组,但编译器总是在struct initializer中说多余的元素.我尝试在数组定义中只放置一个结构初始化器,它已编译,但数组的其余2个元素为null
我该怎么办?

struct CandyBar{
    string brand;
    float weight;
    int calories;
};

int main(int argc, const char * argv[]) {

        array<CandyBar, 3> ary_cb =
    {
        {"Mocha Munch", 2.3, 350},
        {"Mocha Munch", 2.3, 350},
        {"Mocha Munch", 2.3, 350}
    };
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays c++11

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

如何放置到 std::array 的 std::vector?

使用向量向量,我可以这样做:

std::vector<std::vector<int>> vov;
vov.emplace_back(std::initializer_list<int>{0, 0});
Run Code Online (Sandbox Code Playgroud)

但是, std::array 的向量等效失败:

std::vector<std::array<int, 2>> voa;
voa.emplace_back(std::initializer_list<int>{0,0});
Run Code Online (Sandbox Code Playgroud)

在向量中放置数组的正确方法是什么?

编辑:

是的,您可以从初始化列表创建 std::array :

std::array<int, 2> a = {0, 0}
Run Code Online (Sandbox Code Playgroud)

工作正常。

错误:

error C2664: 'std::array<int,2>::array(const std::array<int,2> &)': cannot convert argument 1 from 'std::initializer_list<int>' to 'const std::array<int,2> &'
Run Code Online (Sandbox Code Playgroud)

c++ stdvector stdarray emplace

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

如何通过构造函数确定私有std :: array成员的大小?

我有一个class B应该包含一个private std::array<A*>,并且大小将通过构造函数发送

class B
{
  public:
    B(size_t s) : vv(s,nullptr), aa(s) {}
    // ... more stuff
  private:
    std::vector<A*>   vv;   // vector works fine
    std::array<A*,??> aa;   // but how to initialize an array??
}
Run Code Online (Sandbox Code Playgroud)

使用std::vector可以很好地工作,但是似乎无法使用它std::array

添加另一个成员const size_t ss并在std::array声明中使用它也不起作用,即使它是static const size_t ss-编译器(VS2019 16.1.5,设置为C ++ 17)声称“ ...期望的编译时常量...”

class B  // another try with a static const size_t
{
  public:
    B(size_t s) : ss(s), aa(s) {}
    // …
Run Code Online (Sandbox Code Playgroud)

c++ arrays constructor

-1
推荐指数
1
解决办法
51
查看次数