动态结构数组不允许使用 <std::vector>

如何解决动态结构数组不允许使用 <std::vector>

对于我的编程项目的基础知识,我必须编写一个小应用程序,允许用户学习波兰语和英语的单词和短语。我项目的第一个函数将 100 个波兰语和英语单词加载到标准结构数组中。然后,对于负责我的应用程序的两种模式之一的功能(第一种是自由学习,另一种是测验),我想创建一个较小的动态结构数组,该数组将具有与用户输入一样多的元素,例如,如果您输入 10,此函数将创建一个 10 元素的动态结构数组。然后它会要求您翻译给定的单词/短语,直到您给出正确的答案。我被困在如何创建结构的动态数组上。出于一些难以想象的原因,我不允许使用非标准库(std::vector 和 std::array 被禁止)。到目前为止,这是我的代码

void WczytywanieWyrazen(Wyrazenie Polskie[100],Wyrazenie Angielskie[100])
{
    int i = 0,j = 0;
    fstream plik1("PolskieSlowka.txt",ios::in);
    fstream plik2("AngielskieSlowka.txt",ios::in);

    string Fraza;
    string Phrase;

    for (int i = 0; i < 100; i++)
    {
        Polskie[i].wartosc = 0;
        Angielskie[i].wartosc = 0;
    }

    while (getline(plik1,Fraza))
    {
        Polskie[i].zwrot = Fraza;
        i++;
    }

    while (getline(plik2,Phrase))
    {
        Angielskie[j].zwrot = Phrase;
        j++;
    }

    plik1.close();
    plik2.close();
}

void TrybNauki()
{
    srand(time(NULL));
    int m;
    cout << "Please enter how many words would you like to practice (1-100): ";
    cin >> m;


    Wyrazenie* Fiszki = new Wyrazenie[m];


}

这些方法中哪一种是正确的? :

    Wyrazenie* Fiszki[m];
    for (int i = 0; i < 100; i++)
    {
        Fiszki[i] = new Wyrazenie;
    }
    /////////////////////
    Wyrazenie* Fiszki = new Wyrazenie[m];

解决方法

在 C++ 中以传统方式创建动态分配的结构数组的正确答案如下所示:

struct Structure{
int x;
int y;
};
//...
cin >> m;

Structure* MyStruct[m] = new Structure; // creates an array of pointers type struct
for(int i = 0; i < SomeValue; ++i)
MyStruct[i].x = Value;

//or you could make a structure like that

for(int i = 0; i < SomeValue; ++i){
Structure _Var;
_Var.x = Value;
_Var.y = Some other value;
Mystruct[i] = _Var;
}

//Never forget to free up the memory!
delete[] MyStruct;

//Now,if for some reason you need to have a 2D array created dynamically the //"traditional" way,it would look something like this

Structure** MyStruct = new Structure* [m];// Creates an array of pointers to arrays of pointers

for(int i = 0; i<SomeValue ++i)
MyStruct[i] = new Structure;

//Now freeing up the memory looks something like this

for(int i = 0; i<SomeValue ++i){
delete MyStruct[i];
MyStruct[i] = NULL;
}

delete[] MyStruct;
MyStruct = NULL;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?