C ++动态扩展数组

时间:2012-06-03 20:50:13

标签: c++ arrays multidimensional-array

在C ++中你可以分配一个数组而不告诉它数组的大小吗?我正在模拟杂货结账程序,我打算使用多维来实现这一点,因为输入需要如下: “请输入产品编号和数量”110111 4(首先是产品编号,第二个是数量)。

由于第二个值

,下面会抛出错误
#include <iostream>
#include <fstream>
#include "checkout.h"
using namespace std;

int main()
{
    Checkout check;
    int choice;
    int array_size = 0;
    int max = 10;
    int* product_info = new int[max][1];

    do{
        cout << "Please Enter Item Number and Quantity: ";
        cin >> product_info[array_size][array_size];
    }while(!choice == 0);

    system("pause");
    return 0;
}

编辑 * 我意识到在这个例子中数组cin搞砸了。

1 个答案:

答案 0 :(得分:2)

对于此任务,二维数组似乎不是非常有效,数组将非常稀疏。

您可以根据需要动态增长它,但只能在一个维度(您可以选择编码时间),另一个维度必须永久修复,这最多只能解决一半。

在您的程序中,您使用一个声明已绑定1的维度。这意味着允许的索引范围仅从00,因此该维度不会真正存在。

所以你只需要像一维数组那样的东西(按产品ID索引;数量将被放置在里面数组而不是作为第二个维度);在你的应用程序中,代替数组的vector(如注释中所示)将为你处理动态方面(重新分配),这样你甚至不必关心当前向量的大小。

以下是如何声明结构,除了POS代码(项目的ID)通常太大而无法放入实际应用程序中的int,并且数量可能并不总是如此真的是不可或缺的。

struct transaction_line
{
    int poscode;
    int quantity;
};

std::vector<transaction_line> transaction;