gpt4 book ai didi

头文件中的 C++ 数组

转载 作者:行者123 更新时间:2023-11-30 01:29:28 54 4
gpt4 key购买 nike

我正在做一个训练练习,但开始时遇到了困难。我必须为数组数据结构编写一个程序。提供了一个测试工具,我需要实现数据结构的代码。我不确定如何在头文件中定义数组

下面是我无法编辑的测试工具 main.cpp

#include <fstream>
#include <iostream>
using namespace std;


// *****************************
// you need to create this class
// *****************************
#include "ArrayIntStorage.h"


int main(int argc, char **argv) {
// ***********************************
// non-sort read & then sort using std
// ***********************************
ifstream fin1("ACW2_data.txt");
ofstream out1("1-arrayUnsortedRead.txt");
//ofstream out2("2-arrayUnsortedRead-thenSTDSort.txt");

if(!fin1.is_open())
{
cout << "FAIL" << endl;
return 1;
}

ArrayIntStorage arrayStorage1;
arrayStorage1.setReadSort(false); // do not read sort

// read in int values into data structure
fin1 >> arrayStorage1;

// output int values in data structure to file
out1 << arrayStorage1;

// sort data structure using std
arrayStorage1.sortStd();

// output int values in data structure to file
out2 << arrayStorage1;

fin1.close();
out1.close();
out2.close();

任何关于头文件的信息以及如何将它们与这个主文件一起使用将不胜感激

谢谢你

最佳答案

我很确定您应该创建 ArrayIntStorage.h header 并实现匹配的 ArrayIntStorage.cpp。

基于“//sort data structure using std”注释,您应该使用并在适当的 STL 容器上创建一个包装器,例如 std::vector。

基于“//do not read sort”注释,默认情况下,您应该在每次插入后对 vector 进行排序(当然,除非有人在您的包装器上调用 setReadSort(false))。

除了上面描述的接口(interface),你还需要实现>>和<<。

更新。

C++ pass variable from .cpp to header file 阅读您的问题你似乎对这一切感到很困惑......

首先,添加对 >> 和 << 运算符的支持:

您可以通过在您的 .h 文件中声明这些操作符来做到这一点:

friend std::ostream& operator<<(std::ostream &out, const ArrayIntStorage &a);

friend std::ifstream & operator>>(std::ifstream &, ArrayIntStorage &);

然后您在 .cpp 文件中定义它们的实现:

std::ostream& operator<<(std::ostream &out, const ArrayIntStorage &a)
{ return out; }

std::ifstream & operator>>(std::ifstream &, ArrayIntStorage &)
{ return in; }

显然,您需要在那里添加一些适当的代码,这只是为了使其能够编译。如果仍然无法编译,请检查您是否已将流 header 包含在 .h 文件中:

#include <fstream>
#include <iostream>

现在了解一些一般信息:

你的数组存储应该基于类似 std::vector 的东西。您需要实现的 >> 和 << 函数的目的是从该容器中添加和检索 int。

由于 ArrayIntStorage 是一个类,一旦您建立了所需的接口(interface)(.h 文件中的公共(public)成员函数),您应该只查看 .h 和 .cpp 来充实实现。

一旦完成,您就不需要任何其他问题的答案所说的“外部”疯狂。看看你的主要功能。如果创建您的类和 fin1 流的对象。然后它会调用您已实现的 >> 运算符。所有这些都是通过局部变量完成的。

这就是您“使用 main.cpp 中此变量的值”的方式。您使用该变量作为参数调用类的成员函数。

最后,如果您在理解头文件和链接错误方面遇到所有这些问题,您确定您已经开始了正确的培训练习吗?

关于头文件中的 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841992/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com