【发布时间】:2017-09-11 20:19:52
【问题描述】:
所以我的程序只是读取输入的数字并按顺序列出它们。如输出所示。 没有使用算法库,我对它进行了排序,去掉了重复数据。但是,如果有重复的数据值,则不会打印向量的最后一个值。我是否错误地使用了.erase?
void remove_repeated(int size, vector<int>& num_vec){
for(int i = 0; i < num_vec.size(); i++){
if(num_vec[i]==num_vec[i+1]){
num_vec.erase((num_vec.begin()+i));
}
}
}
没有重复值时的输出:
**Welcome to the HW Reading Program**
Please, enter your HW:1-10
Do Problems: 1, 2, 3, 4, 5, 6, 7, 8, 9,and 10
当一个值重复时输出:
**Welcome to the HW Reading Program**
Please, enter your HW: 1-10,1-3
Do Problems: 1, 2, 3, 4, 5, 6, 7, 8,and 9
【问题讨论】:
-
A) MVCE B) 修复缩进。 TIA。
-
您发布了很多不相关的代码。您可以发布一个简单的
main程序,用重复的硬编码值填充一个向量,然后简单地调用remove_repeated来查看它是如何运行的。排序与您遇到的问题无关。 -
@Borgleader A) 我已尽我所能修复它。 B) 我的压痕的哪一部分是不可接受的?
-
@Pouya -- Please see this as to what a Minimal, Compilable, and Verifiable Example denotes。无需显示排序、提示或其他任何内容。我们从给定的测试数据中看到该函数有问题。
-
这个问题的 MCVE 示例:ideone.com/XV9P3G 请注意,它除了在
vector上运行remove_repeated之外什么都不做,旨在暴露错误并打印出结果。