繁体   English   中英

如何删除向量中的所有项目? C ++

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

我只是想让我所有的元素都设为0而无需手动

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

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

错误:请求'v'中的成员'clear'为非类类型'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;
}

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

std::fill(std::begin(v), std::end(v), 0);

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

例如

#include <cstring>

//...

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

同样,C ++中数组的索引从0开始。

for( i = 0; i < n; i++ )
  1. 也许您可以使用std::array ,它也可以指定大小,例如int v[101] 然后,您可以使用v = {0}使我的所有元素成为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回答的最佳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM