【发布时间】:2015-12-04 08:13:59
【问题描述】:
我有一个向量,其中包含 0-14 的随机数,其中一些可能是重复的(例如 {3,8,11,2,3,6,1,11,9,4,13 ,12,6,5,4} 并没有代表所有数字),我想删除重复项并确保代表每个数字 0-14。
所以我还有另一个vector<int> unrepresented 和vector<int> duplicates。我用 0-14 的每个数字填充“无代表”:
for (int i = 0; i<num; i++)
{
unrepresented.push_back(i);
}
然后我执行以下操作:
for (int i = 0; i<num; i++)
{
if (find(unrepresented.begin(), unrepresented.end(), new_gene_array_one[i]) != new_gene_array_one.end())
unrepresented.erase(i);
else
duplicates.push_back(new_gene_array_one[i]);
}
我知道擦除函数应该采用迭代器,但我仍然不明白它应该如何使用它,因为我想擦除某个元素(不是位置,而是实际数字) “unrepresented”如果它在那里,否则如果它不在那里,那么把它放在重复向量中,然后在整个事情之后取出未表示向量中的元素并替换原始向量中的重复元素,这样所有的数字将被表示。
【问题讨论】:
-
erase()采用迭代器。find()返回一个迭代器。考虑可能性。
标签: c++ arrays algorithm vector