【问题标题】:How can I erase all items from a vector? C++如何从矢量中删除所有项目? C++
【发布时间】:2019-11-24 09:25:49
【问题描述】:

我只是想制作我所有的元素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;
}

【问题讨论】:

  • 因为'v'是一个数组而不是一个向量。
  • “我在网上发现我可以使用这个命令:v.clear(); -如果某些在线网站声明你可以使用本机数组来做到这一点,即int v[101]; 然后我建议您避免返回该站点;太垃圾了。
  • 那里没有向量。

标签: c++ arrays loops for-loop memset


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    例如

    #include <cstring>
    
    //...
    
    std::memset( v, 0, n * sizeof( int ) );
    

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

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

    【讨论】:

      【解决方案3】:
      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. 事实上,我认为用户 Evg 回答的std::fill(std::begin(v), std::end(v), 0); 是最好的。

      【讨论】:

        猜你喜欢
        • 2010-12-04
        • 1970-01-01
        • 2021-12-03
        • 2011-07-19
        • 2014-06-09
        • 1970-01-01
        • 2013-04-20
        • 2013-01-03
        • 2014-09-15
        相关资源
        最近更新 更多