在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搞砸了。
答案 0 :(得分:2)
对于此任务,二维数组似乎不是非常有效,数组将非常稀疏。
您可以根据需要动态增长它,但只能在一个维度(您可以选择编码时间),另一个维度必须永久修复,这最多只能解决一半。
在您的程序中,您使用一个声明已绑定1
的维度。这意味着允许的索引范围仅从0
到0
,因此该维度不会真正存在。
所以你只需要像一维数组那样的东西(按产品ID索引;数量将被放置在里面数组而不是作为第二个维度);在你的应用程序中,代替数组的vector
(如注释中所示)将为你处理动态方面(重新分配),这样你甚至不必关心当前向量的大小。
以下是如何声明结构,除了POS代码(项目的ID)通常太大而无法放入实际应用程序中的int
,并且数量可能并不总是如此真的是不可或缺的。
struct transaction_line
{
int poscode;
int quantity;
};
std::vector<transaction_line> transaction;