3

在 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 在这个例子中被搞砸了。

4

1 回答 1

2

二维数组对于这项任务似乎不是很有效,数组会非常稀疏。

您可以根据需要动态增长它,但只能在一个维度(您可以选择作为编码时间)中,另一个必须永久固定,这充其量是一半的解决方案。

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

所以你只需要一个像一维数组这样的东西(按产品 ID 索引;数量将放在数组,而不是作为它的第二维);在您的应用程序中,avector代替数组(如注释中所示)将为您处理动态方面(重新分配),因此您现在甚至不必关心向量有多大。

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

struct transaction_line
{
    int poscode;
    int quantity;
};

std::vector<transaction_line> transaction;
于 2012-06-03T20:55:07.860 回答