繁体   English   中英

在C ++中创建用户定义大小的一类对象

[英]Creating Objects of A class of user defined size in C++

我想在运行时创建具有用户定义大小的类的对象。 就像用户输入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]表达式必须具有恒定值。 那么该怎么做呢?

为此目的而创建了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..
}

或者,您可以动态分配和取消分配。 如果您是new [],请不要忘记删除[]!

#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;
}

测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM