STD ::数组的初始大小在使用它的类的构造函数中
Initialise size of std::array in a constructor of the class that uses it
是否可以将std::array<class T, std::size_t N>
用作类的私人属性,但是在类的构造函数中初始化其大小?
class Router{
std::array<Port,???> ports; //I dont know how much ports do will this have
public:
Switch(int numberOfPortsOnRouter){
ports=std::array<Port,numberOfPortsOnRouter> ports; //now I know it has "numberOfPortsOnRouter" ports, but howto tell the "ports" variable?
}
}
我可能会使用指针,但是如果没有它?
您必须使您的类Router
成为模板类
template<std::size_t N>
class Router{
std::array<Port,N> ports;
...
}
如果您希望能够在Router
latver 上指定ports
的大小。顺便说一句,N
必须是从编译时间已知的常数。
否则您需要std::vector
。
否,必须在编译时知道大小。改用std::vector
。
class Router{
std::vector<Port> ports;
public:
Switch(int numberOfPortsOnRouter) : ports(numberOfPortsOnRouter) {
}
};
std::array<T, N>
的大小是一个编译时常数,在运行时无法更改。如果您想要具有灵活界限的数组,则可以使用std::vector<T>
。如果数组的大小不会改变,并且您以某种方式从其上下文中知道大小,则可以考虑使用std::unique_ptr<T[]>
。它有点轻巧,但也无助于复制或调整大小。
std::array
是 filex 长度的数组。因此,必须在编译时知道长度。如果您需要具有动态长度的数组,则需要使用std::vector
:
class Router{
std::vector<Port> ports;
public:
Switch(int numberOfPortsOnRouter):ports(numberOfPortsOnRouter){}
};
相关文章:
- 在字符数组维度分析中构造字符数组
- 第 i 个元素返回 i 的函数数组
- 使用嵌套函数数组是个好主意吗?
- 正确实现类函数数组
- 试图引用已删除函数数组的相等运算符
- 如何在静态函数中使用成员函数数组
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 无法创建函数数组
- 构造函数数组
- 使用开关或定义函数数组 - 更快
- 如何使用构造函数的参数构造成员数组的每个元素
- 编写一个函数,该函数将覆盖主函数数组中的值
- 函数,该函数动态构造字节数组并返回长度
- 可以像'funs[1]();'一样调用的函数数组
- std::AVX内部函数数组
- 如果数组大小未知,如何将函数数组作为参数传递
- 从函数数组中获取值
- 使用元编程在编译时初始化函数数组
- 复制构造函数 [数组] C++
- 深层复制构造函数数组类