如何从矢量中删除所有项目? C++
Posted
技术标签:
【中文标题】如何从矢量中删除所有项目? C++【英文标题】:How can I erase all items from a vector? 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];
然后我建议您避免返回该站点;太垃圾了。
那里没有向量。
【参考方案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】:-
也许,你可以使用
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 << " ";
-
如果你不喜欢
std::array
,你也可以这样做。
int v[5] = 1, 2, 3, 4, 5;
int *p = v;
while (*p++ = 0, *p != 0) ;
-
事实上,我认为用户 Evg 回答的
std::fill(std::begin(v), std::end(v), 0);
是最好的。
【讨论】:
以上是关于如何从矢量中删除所有项目? C++的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5.5 使用 C++,从 ComboBox 中删除和项目正在删除项目之前的所有项目