我想创建一个包含在类中的数组。数组将具有固定大小,但在类的构造函数之前我不知道固定大小。
假设用户创建了类似:Fibanocci f(value1, value2, size)
的内容。然后,size
参数将用于确定包含数组中元素的数量,这些元素将在Fibanocci
实例的整个整个生命周期内得到修复。
如何解决此问题?
答案 0 :(得分:1)
改为使用std::vector<type> vector
,您可以执行int size = vector.size()
。您可以在构造函数中初始化向量的大小。例如,
// MyClass.hpp
class MyClass
{
public:
MyClass();
// Say I know this vector is going to have 5 elements
std::vector<double> myVector;
}
// MyClass.cpp
MyClass::MyClass() : myVector(5)
{
int vectorSize = myVector.size(); //vectorSize = 5
}
答案 1 :(得分:0)
这是不可能的,因为C / C ++要求所有类都具有常量sizeof
。唯一的方法是使用堆分配(new
或std::vector
作为@jlack建议或其他任何方式)
答案 2 :(得分:-1)
数组大小必须在编译时知道!!不要以为你会因使用vector而失去性能,它是数组的包装器。如果您非常严格并且拥有C ++ 11,则可以使用标准库中的数组。
我是否使用调整大小或保留?
预留将分配内存但不插入任何内容。除非指定参数,否则Resize将插入默认构造对象的副本。
答案 3 :(得分:-3)
Java使数组动态化,它将在运行时分配大小。 将形成其对象为此数组的代理类。
int a[]=new int[10];