如何根据用户输入或 cin 在数组中创建新的一行值?
假设数组中已经有一行值,您需要添加第二行值但未添加到第一行,以及如何将大括号和逗号放入,用户是否放入或有什么这将自动将括号和逗号放入
int test [] = { 1, 21, 771, 410, 120711 },
{ 1, 2, 3, 4, 5 };
如果没有非常糟糕和肮脏的技巧,这是不可能的。最好使用列表或向量(最接近数组)。另一种可能性是使用指针并对其进行扩展,创建一个临时内存,复制旧数据,然后添加新数据。
你要求一个二维数组。这是这样声明的:
int test[][5] = {
{1, 21, 771, 410, 120711},
{1, 2, 3, 4, 5 },
// Add more if you want.
};
第一个数组通过 访问test[0]
,第二个通过test[1]
等等。第一个数组的第一个元素是test[0][0]
,第二个test[0][1]
等等。
请注意,这是一个具有静态大小的数组。您无法在运行时更改它。如果您事先知道需要多少行,只需将其声明为:
int test[NUMBER OF ROWS][NUMBER OF COLUMNS];
然后稍后用值填充它。但是你不能改变大小。如果你想要一个完全动态的数组,那么你应该使用一个向量向量:
std::vector< std::vector<int> > test;
然后,您添加行:
test.push_back(std::vector<int>());
并向每一行添加元素:
// Adds a number to the first row.
test[0].push_back(some_int);
访问的方式与使用静态数组(test[0]
,test[0][0]
等)的方式相同
无法在保留其内容的同时更改数组的大小。改变数组大小的唯一方法是使用new
运算符为指针分配动态内存,但这会破坏数组先前保存的任何数据。如果您想拥有一个可调整大小的数组,您可能应该使用std::vector.
如果您热衷于使用 c++11,您可以使用 std::vector 保留初始化列表,如下所示:
#include <vector>
int main()
{
// initialise
std::vector<std::vector<int>> test = { { 1, 21, 771, 410, 120711 },
{ 1, 2, 3, 4, 5 } };
// add new data from user
test.push_back({9, 8, 7, 6, 5, 4, 3, 2, 1});
}