c++ - 在 C++ 中选择运行时数组或 vector

标签 c++ arrays vector types

我有一个问题描述如下::

    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 添加到您的类中,并在每个构造函数中根据需要将其设置为truefalse。然后,在 printdata 中,只需检查 bool 值。

或者您可以在 vector 情况下将size 设置为-1(因为它在其他情况下未被使用)并检查它。

顺便说一句,你的数组实现被破坏了,因为你从来没有为它分配任何内存。 使用 vector 版本会更好。如果您愿意,您仍然可以从数组数据中初始化该 vector 。

关于c++ - 在 C++ 中选择运行时数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37074622/

相关文章:

php - 解析包含 3 个分隔符的格式化字符串以创建多个平面数组

集合的 C++ vector 在执行 push_back 后给出段错误

c++ - 无法创建二维数组

c++ - 线弯曲的简单算法

c++ - 运算符重载多个操作数 C++

c++ - 创建线程总是对性能有好处吗?

C++ 用数组简单计算分数

c++ - 带 CMake 的 Qt5 - AUTOMOC 开启时 vtable 错误

java - 列表实现不解析强制转换

r - 使用 R 将一个向量的元素分配给另一个向量的元素