将大数据文件读入数据结构c ++

为了给我一点背景,我有三个主要类别客户,旅游,雇用。
客户将在其构造函数中包含基本客户数据,例如客户名称,客户ID。
作为GuidedTours基础教学之旅具有类似的数据。
招聘是一个具有可供客户雇用的设备的细节的类

主要问题

我们需要从大型文本文件中读取所有这些类的数据,并基本上将它们存储在不同的数据结构Map,List,Vector中,以对所有这些数据结构进行性能界限检查。
所以我可以看到它的工作,但最让我困惑的部分是我如何初始化不同的对象

如果我从main读取它,则按照以下方式标记该行
Tour *newtour = new Tour();
newTour.addtoMap(tokenise, data, will, go, here);

在这个方法中,我将在游览中添加一个名为“addtoMap”的函数,并在其中实现我的数据结构,并且在main.cpp端我将每个游标指针保存在向量中。 我是否需要在默认的Tour()构造函数中初始化数据结构?
这是一个很好的编程习惯吗? 我们需要在每个数据结构上做一些时间,以便能够给出不同结构之间的图形表示和偏差,但是我将使用vector来存储我的所有Tour,Customer,Hire指针在main.cpp中,是否对性能有显着影响。

2如果我以下面的方式做
Tour *newtour = new Tour(tokenised, data, goes, here);
通过这种方式,我将值传递给构造函数,所以我将不得不在构造函数中执行我的Map实现,我觉得它不好。
有没有其他办法可以让我去解决这个问题,我喜欢这种方法,但我无法想象我将如何以及在哪里实现我的地图来存储这些数据?

我对c ++很陌生,我想以某种方式实现它,这样做的理由是为了支持OOP方法。 如果除此之外还有别的办法,我会为此敞开大门。

我曾看过另一个类似问题的线程,但他有3.8GB的数据文件,只有934 kb,但对我来说足够大。


你需要在容器和数据对象之间分开 - 这听起来像你需要的是数据对象的“简单”数据库类,例如一个Customer类。 而且,对于其中的每一个,您都需要一个容器来容纳这个类的对象。

您最好使用STL(标准模板库)容器,如vector (或map ,或任何您需要的),例如vector<Customer> 。 这些容器将为您完成所有关于清单管理的繁重工作。 你只需要编写你的数据类,例如:

 class Customer
 {
 private:
     std::string m_name;
 public:
     Customer(std::string name): m_name(name) {}
 };

接着:

 std::string nameLoadedFromFile;
 Customer customer(nameLoadedFromFile);
 std::vector<Customer> custList.push_back(customer);

如果你想从文本文件读入这些类,我的建议是你为输入流和运算符提供了一个构造函数来为你的每个类序列化数据。 c ++的方式通常是这样的:

class Tour {
public:
   Tour(std::istream & input);
   friend std::ostream & operator<<(sd::ostream & channel, Tour const & t);
   friend std::istream & operator>>(std::istream & channel, Tour & t);   
};

编辑:参数的顺序是不正确的,我改变了它。 对不起,我错了。

查看本教程以了解有关流的信息。 运算符<<必须能够将你的类写入std::stream 。 操作员>>必须能够读取它。 如果默认构造一个类是没有意义的,那么流构造函数是一个好主意,但至少要提供operator <<和operator >>。

一旦你可以读/写你的类,把它们放到mapvector就可以读取文件并使用这些方法。


使用指针是不好的编程习惯。 Tours的向量有什么问题,而不是游标指针的向量?

对我来说,你的问题的答案是改变你添加巡视到地图的方式。 这看起来是最自然的做事方式

Tour newtour(tokenised, data, goes, here); // no pointers
map.addTour(newtour);

因此,不要将addtoMap作为Tour的一种方法,而是将addTour作为地图对象的一种方法。

链接地址: http://www.djcxy.com/p/87901.html

上一篇: Reading large data file into data structure c++

下一篇: C++: Data structure for efficient insertion and retrieval of custom data