利用动态数组,且删除后容器的大小也相应变小。(erase+remove)
#includeMethod 2#include using namespace std; int main() { int n,k; cin >> n; vector a(n); //定义一个含n个元素的动态数组 int m; for (int i = 0; i < n; i++) { cin >> m; a[i] = m; }//赋初值 cin >> k; a.erase(remove(a.begin(), a.end(), k), a.end()); //erase函数和remove函数结合使用,把a中所有和k相等的元素都删掉 cout << a[0]; for (vector ::iterator it = a.begin()+1; it != a.end(); ++it) // 定义了vector 类型的迭代器it cout <<" "<< * it << endl; return 0; }
不改变容器的大小。(remove)且输出整个容器
#includeMethod 3#include using namespace std; int main() { int n,k; cin >> n; vector a(n); int m; for (int i = 0; i < n; i++) { cin >> m; a[i] = m; } cin >> k; remove(a.begin(), a.end(), k);//只使用remove不会改变容器本身的大小,况且remove也不是a的成员函数,它的使用不局限于某个容器。不过这样的话容器的有效的数只在前几个,后面的值被remove之后就成了随机数 cout << a[0]; for (vector ::iterator it = a.begin()+1; it != a.end(); ++it) // 定义了vector 类型的迭代器it cout <<" "<< * it; return 0; }
不改变容器的大小(remove)且输出容器中的有效数字
#include#include #include #include using namespace std; int main() { int n, k; cin >> n; vector a(n); int m; for (int i = 0; i < n; i++) { cin >> m; a[i] = m; } cin >> k; vector ::iterator ret = remove(a.begin(), a.end(), k); cout << a[0]; if (ret != a.begin()) { for (vector ::iterator i = a.begin()+1; i != ret; i++) { cout << " " << *i; } } return 0; }



