【发布时间】:2022-01-18 05:04:48
【问题描述】:
最近我开始学习 C++,每天我都会做一个 C++ 练习以进一步了解这门语言。今天我在学习向量数组,但遇到了障碍。
我正在尝试制作一个简单的程序,该程序接受一个数组,将其放入一个向量中,然后删除所有奇数。但是由于某种原因,当我从向量中删除一个元素并输出修改后的向量时,它不会输出任何内容。
如果有人能在我做错的事情上指引我正确的方向,那就太好了!
remove.cpp
#include <iostream>
#include <vector>
using namespace std;
class removeOddIntegers {
public:
void removeOdd(int numbs[]) {
vector<int> removedOdds;
for(int i = 0; i < 10; ++i) {
removedOdds.push_back(numbs[i]);
}
for(auto i = removedOdds.begin(); i != removedOdds.end(); ++i) {
if(*i % 2 == 1) {
removedOdds.erase(removedOdds.begin() + *i);
std::cout << "Removed: " << *i << endl;
}
}
for(auto i = removedOdds.begin(); i != removedOdds.end(); ++i) {
std::cout << *i << endl; //doesn't output anything.
}
}
};
main.cpp
#include <iostream>
#include "remove.cpp"
using namespace std;
int main() {
removeOddIntegers r;
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
r.removeOdd(numbers);
return 0;
}
现在,我知道我可以只过滤数组,然后只将偶数推回向量,坦率地说,这就像一个魅力。但我想了解为什么我的方法不起作用。为什么当我从向量中删除一个元素时,它只是无法输出任何东西?
提前致谢!
【问题讨论】:
-
你为什么不用
std::vector?