我有一个问题描述如下::
class datad {
private:
int *a;
int _size;
vector<int> v;
public:
datad(int arr[], int size) {
_size = size;
for (int i = 0; i < size; i++)
a[i] = arr[i];
}
datad(vector<int> ve)
{
v = ve;
_size = ve.size();
}
void printdata()
{
// print data which the object has been initialized with
// if object is initialized with vector then print vector
// array print array
}
};
int main()
{
// print only vector data
int a[] = { 9,4,8,3,1,6,5 };
datad d(v1);
d.printdata();
// print only array data
datad d1(a, 7);
d1.printdata();
}
我需要找到初始化对象的方式,然后基于相同的方式应该能够相应地打印数据。 有人可以帮助我了解这是否可能吗?
最佳答案
将bool usesVector
添加到您的类中,并在每个构造函数中根据需要将其设置为true
或false
。然后,在 printdata
中,只需检查 bool 值。
或者您可以在 vector 情况下将size
设置为-1
(因为它在其他情况下未被使用)并检查它。
顺便说一句,你的数组实现被破坏了,因为你从来没有为它分配任何内存。 只使用 vector 版本会更好。如果您愿意,您仍然可以从数组数据中初始化该 vector 。
关于c++ - 在 C++ 中选择运行时数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074622/