如何从矢量中删除所有项目? 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);
- 也许,你可以使用
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 << " ";
}
- 如果你不喜欢
std::array
,你也可以按下面的方式做。
int v[5] = {1, 2, 3, 4, 5};
int *p = v;
while (*p++ = 0, *p != 0) { };
- 事实上,我认为
std::fill(std::begin(v), std::end(v), 0);
用户 Evg 的回答是最好的。
我只是想制作我所有的元素 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);
- 也许,你可以使用
std::array
,它也可以像int v[101]
那样指定大小。 然后,你可以使用v = {0}
来制作 make my all elements0
.
例如:
#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) { };
- 事实上,我认为
std::fill(std::begin(v), std::end(v), 0);
用户 Evg 的回答是最好的。