如何对存储在向量中的对象中存储的数据进行唯一化?

时间:2015-05-23 12:22:56

标签: c++ object vector duplicate-removal

我想创建一种方法来消除文本文件中的重复项。

编辑:为什么我会被投票?在询问之前,我并没有像在网上搜索一样。

例如,文本文件中的数据:

Fruits:Edible:Inedible
Apple:5:10
Apple:1:2
Pear:5:1
Orange:20:1
Pear:5:1
Apple:5:10
Orange:1:20
Orange:20:1

根据这个例子,我有一类苹果,橙子,梨。使用该类,我使用set方法创建了3个不同的对象向量来存储它们。

例如,如果检测到Apple

Apple.setedible(Edible);
Apple.setinedible(Inedible);

我现在可以很好地将它们存储到它们的对象向量中,这将导致:

In Apple vector:
5:10
1:2
5:10

In Orange Vector:
20:1
1:20
20:1

In Pear Vector:
5:1
5:1

我想消除edibleinedible上的重复基础,我不知道如何消除它们会导致我:

In Apple vector:
5:10
1:2

In Orange Vector:
20:1
1:20

In Pear Vector:
5:1

请告知。

1 个答案:

答案 0 :(得分:1)

您想要5:101:2的类型?它是一个字符串还是几个整数?我想这是我的例子中的一个字符串。

您应该使用std::map< std::string , std::set<std::string> >来存储数据。然后你可以像这个例子一样添加它,每个水果的每个字符串都是唯一的:

std::map< std::string , std::set<std::string> > data;
data["Apple"].insert("5:10");
data["Apple"].insert("1:2");
data["Apple"].insert("5:10"); // Nothing is inserted here, already exists