C++用一个新类初始化二维向量;默认值更改
c++ initialize 2d vector with a new class ; default value change
我想初始化一个 2d 向量,但不断收到错误消息
如果我写这段代码
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 的向量,向量内部的值(数字(为 63。
这就是我的课 土壤
class Soil
{
public:
Soil();
double A;
double B;
double C;
double D;
};
#endif // SOIL_H
我该怎么办?
您的代码不起作用initialmPo
因为Soil
实例无效。您需要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
元素作为第二个参数传递。在您的类中,您应该定义一个构造函数,该构造函数负责使用所需的值初始化字段。或者,您应该消除无参数构造函数并选择聚合初始化。
示例(带构造函数(
#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;
}
现场观看
示例(使用聚合初始化(
#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;
}
现场观看
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 使用 C++98 标准填充二维静态向量
- C++中复向量与实向量的二维卷积
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 如何声明二维模板化类类型向量?
- 类对象初始化的二维向量
- 如何定义二维矢量哪个元素是可变大小的向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器