c++用新类初始化二维 vector ;默认值更改

标签 c++ class vector 2d default

我想初始化一个二维 vector ,但我一直收到错误消息

如果我写这段代码

unsigned long size = 101;
double initialmPo = 63;

std::vector<std::vector<Soil> > matrixPotential(
              size, std::vector<Soil>(size));

我没有问题 但是如果我写这段代码

    std::vector<std::vector<Soil> > matrixPotential(
              size, std::vector<Soil>(size, initialmPo));

我收到消息

no matching constructor for initialization of  std::vector< Soil >

我想要一个 101*101 的 vector , vector 内部是 63 的值(数字)。

那是我的类(class)土壤

class Soil
{
public:
    Soil();
    double A;
    double B;
    double C;
    double D;
};

#endif // SOIL_H

我该怎么办?

最佳答案

您的代码不起作用,因为 initialmPo 不是有效的 Soil 实例。 constructor std::vector 你需要的是

explicit vector( size_type count,
                 const T& value = T(),
                 const Allocator& alloc = Allocator());     (until C++11)

         vector( size_type count,    
                 const T& value,
                 const Allocator& alloc = Allocator());     (since C++11)

为此,您应该将所需的 Soil 元素作为第二个参数传递。在您的类中,您应该定义一个构造函数,负责用所需的值初始化字段。或者您应该消除无参数构造函数并选择 aggregate initialization .

示例(带构造函数)

#include <vector>

class Soil
{
public:
    double A;
    double B;
    double C;
    double D;
    Soil(double in) : A{in}, B{in}, C{in}, D{in} { }
};


int main()
{
  unsigned long size = 101;
  double initialmPo = 63;
  Soil s(initialmPo);
  std::vector<std::vector<Soil> > matrixPotential(
              size, std::vector<Soil>(size, s));

  return 0;
}

查看live

示例(聚合初始化)

#include <vector>

class Soil
{
public:
    double A;
    double B;
    double C;
    double D;
};


int main()
{
  unsigned long size = 101;
  double initialmPo = 63;
  Soil s{initialmPo, initialmPo, initialmPo, initialmPo};
  std::vector<std::vector<Soil> > matrixPotential(
              size, std::vector<Soil>(size, s));

  return 0;
}

查看live

关于c++用新类初始化二维 vector ;默认值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805751/

相关文章:

c++ - Visual Studio 2013 错误 MS8020 Build tools v140 找不到

c++ - 如何在 Code::Blocks 中链接 glew 库?

c++ - 如何动态包含makefile

vba - 在Excel VBA中实例化另一个类中的对象

C++ - 黑桃 - 类 : How to use them

jquery - CSS 中 "class"目标的功能/用途是什么?

r - 排序向量的有限距离内最远的元素

c++ - 平铺单纯形噪声?

r - 比较两个向量的值

c++ - 一个类需要什么来定义它的 vector ?