C++ 在C++;,创建';n';对象数,其中n是用户定义的。我该怎么做?

C++ 在C++;,创建';n';对象数,其中n是用户定义的。我该怎么做?,c++,c++11,C++,C++11,我希望程序创建的对象数量由用户控制。有什么不同的方法可以做到这一点,我什么时候应该选择一种方法而不是另一种 #include<iostream> using namespace std; class { public : int FullName; int RollNumber; in { public : int FullName; int RollNumber; int age; int marks; } voidt age; i

我希望程序创建的对象数量由用户控制。有什么不同的方法可以做到这一点,我什么时候应该选择一种方法而不是另一种

#include<iostream>
using namespace std;

class
{
public :
   int FullName;
   int RollNumber;
   in
{
public :
   int FullName;
   int RollNumber;
   int age;
   int marks;
}
voidt age;
   int marks;
};
void main()
{
   int n;
   cout << "How many Students record you want :\t ";
   cin >>n;     
   Data Student[n];
}
#包括
使用名称空间std;
班
{
公众:
int全名;
整数;
在里面
{
公众:
int全名;
整数;
智力年龄;
整数标记;
}
无效年龄;
整数标记;
};
void main()
{
int n;
cout>n;
学生资料[n];
}

如前所述,使用std::vector

然而,您的示例似乎有效:

如果项目的数量在创建时变得固定,那么最好的选择是

std::make_unique<Data[]>(n)
std::使_唯一(n)
但是,如果以后可能需要更改项目组(插入或删除),则

std::vector(n)

您已经在读取输入的值,那么您到底在用什么?您正在寻找
std::vector
。两种基本方法。数一数要读的东西,然后读那么多。或者读取一些东西,直到得到某种终止符,表示“没有更多的项目可以读取”。这被称为可变长度数组(VLA),而不是标准C++的一部分。它是一个编译器扩展
std::vector
是首选方式不是有效的C++,因为。像这样的代码只有在GCC非标准扩展的情况下才能编译。您应该使用
std::vector
来提高代码的可移植性,避免堆栈崩溃。直接(在堆上)使用数组比同时使用堆的std::vector有什么好处?毕竟,两者都有相同的记忆布局。如果您需要插入或删除,我宁愿使用列表。@FrederikDeRuyck:这两种建议都不是“直接使用数组”。我建议在操作足够的时候使用较少的智能指针,在需要的时候使用更多操作的智能指针。而位置/缓存效率意味着链表通常会丢失到连续存储中,即使在插入和删除时也是如此。
std::vector<Data>(n)