如何从矢量中删除所有项目? C++

How can I erase all items from a vector? C++

我只是想制作我所有的元素 0 而不是手动

for (i = 1; i <= n; i++) 
    v[i] = 0;

我在网上发现我可以使用这个命令:v.clear(); 但它不起作用:

error: request for member 'clear' in 'v', which is of non-class type 'int [101]'

这是我的代码:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n,i,v[101];

int main() {
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];

    v.clear();
    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";

    return 0;
}

你有一个数组。 C++ 中的数组没有方法。您需要的是调用标准 C 函数 memset。

例如

#include <cstring>

//...

std::memset( v, 0, n * sizeof( int ) );

C++ 中数组的索引也是从 0 开始的。所以使用 for 循环,如

for( i = 0; i < n; i++ )

我们有 std::fill,它也可以与 C 风格的数组一起使用:

std::fill(std::begin(v), std::end(v), 0);
  1. 也许,你可以使用 std::array ,它也可以像 int v[101] 那样指定大小。 然后,你可以使用 v = {0} 来制作 make my all elements 0.
    例如:
#include <iostream>
#include <array>

using namespace std;

int main() {
    array<int, 101> v;
    for (auto &elem : v)
        cin >> elem;
    v = {0};
    for (auto elem : v)
        cout << elem << " ";
}
  1. 如果你不喜欢std::array,你也可以按下面的方式做。
int v[5] = {1, 2, 3, 4, 5};
int *p = v;
while (*p++ = 0, *p != 0) { };
  1. 事实上,我认为 std::fill(std::begin(v), std::end(v), 0); 用户 Evg 的回答是最好的。