我想在运行时创建具有用户定义大小的类的对象。 就像当用户输入5时,它创建5个对象。 我试过这个
student s[num];
for(int i=0;i<num;i++)
{
student s[i]; // also used student s[i]=new student();
}
但它表示student s[num]
表达式必须具有常量值。
那怎么做呢?
答案 0 :(得分:3)
std::vector
就是出于此目的。 (基本上是一个动态分配的数组)它有一个构造函数,它采用预先分配和构造的元素数量:
#include <vector>
std::vector<student> students(num);
您可以将其作为普通数组循环:
for(unsigned int i = 0; i < students.size(); ++i)
{
//students[i]..
}
或者,如果您有权访问C ++ 11,请使用基于范围的循环:
for(auto const& student : students)
{
//student..
}
或者,它是迭代器:
for(std::vector<student>::iterator itr = students.begin(); itr != students.end(); ++itr)
{
//access with *itr..
}
答案 1 :(得分:0)
或者,您可以动态分配和取消分配。如果你新[]不要忘记删除[]!
#include <iostream>
struct MyObj {
float a;
float b;
};
int main() {
int num = 10;
MyObj* objs = new MyObj[num];
for(int i = 0; i < num; i++) {
objs[i].a = i;
objs[i].b = i*2;
}
std::cout << objs[3].a << " * 2 = " << objs[3].b << std::endl;
delete [] objs;
return 0;
}