C++动态扩展阵列

C++ dynamic expanding array

本文关键字:阵列 扩展 动态 C++      更新时间:2023-10-16

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的维度。 这意味着允许的索引范围仅为00,因此该维度实际上并不存在。

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

以下是声明结构的方法,只是 POS 代码(物料的 ID)通常太大而无法放入实际应用程序中的int中,并且数量可能并不总是真正的积分。

struct transaction_line
{
    int poscode;
    int quantity;
};
std::vector<transaction_line> transaction;