【发布时间】:2012-04-29 21:18:34
【问题描述】:
我有以下数据:
FolioA Name1 100
FolioA Name2 110
FolioA Name3 100
FolioB Name1 100
FolioB Name3 106
FolioC Name1 108
FolioC Name2 102
FolioC Name3 110
我只想将唯一名称(即 Name1、Name2 和 Name3,各一次)插入
std::vector<std::string> name;
当我遍历数据时。
所以,我有以下代码,我将数据存储在名为 test 的地图中:
std::map<std::string, std::map<std::string, double> >test;
std::map<std::string, std::map<std::string, double > >::iterator it1 = test.begin(), end1 = test.end();
while (it1 !=end1) {
std::map<std::string, double>::iterator it2 = it1->second.begin(), end2=it1->second.end();
**name.push_back(it2->first);**
++it2;
}
++it1;
}
但是,目前通过以我的方式将数据推送到名称中,有 3 个 Name1 实例、2 个 Name2 实例和 3 个 Name3 实例,这是我的代码所期望的。如何将其修复为只有唯一名称。
【问题讨论】:
-
您将如何选择要包含的实例?
-
你必须有一个
vector的名字吗?我建议为此使用set的名称。如果您必须有一个向量,您仍然可以先插入一个集合,然后使用采用iterators 的构造函数重载将对象移动到vector。 -
@juanchopanza,我会选择每个的第一个实例,所以如果向量已经包含(Name1,Name2,Name3),那么当它到达第 4 条记录时,它会识别该记录已经存在,所以它会跳过它,然后转到下一条记录。
-
@Chad,你能发布示例代码
标签: c++ insert unique stdvector