我想清除阵列中的所有元素,但我不知道如何自动清除它。它有功能吗?就像清单()列表一样?
int array[5] = {2,5,4,8,6};
然后我想清除所有内容并添加一组新的值
答案 0 :(得分:4)
您的问题无效,因为您无法clear out
一个数组。数组具有固定大小,并且总是会有一些值。
如果要重新使用数组,只需覆盖现有值。
也许考虑使用std::vector
。使用clear()
功能,您可以清除std::vector
。
了解std::vector
Here
答案 1 :(得分:0)
清除数组意味着将所有值设置为T(),对于基本算术类型的数组,相当于将所有元素设置为零。
您可以通过多种方式完成此操作。第一个是使用标头std::memset
中声明的标准C函数<cstring>
。例如
#include <iostream>
#include <cstring>
int main()
{
int array[] = { 2, 5, 4, 8, 6 };
const size_t N = sizeof( array ) / sizeof( *array );
for ( int x : array ) std::cout << x << ' ';
std::cout << std::endl;
std::memset( array, 0, N * sizeof( int ) );
for ( int x : array ) std::cout << x << ' ';
std::cout << std::endl;
return 0;
}
另一种方法是使用标头std::fill
中声明的标准算法<algorithm>
。例如
#include <iostream>
#include <algorithm>
int main()
{
int array[] = { 2, 5, 4, 8, 6 };
const size_t N = sizeof( array ) / sizeof( *array );
for ( int x : array ) std::cout << x << ' ';
std::cout << std::endl;
std::fill( array, array + N, 0 );
for ( int x : array ) std::cout << x << ' ';
std::cout << std::endl;
return 0;
}
在这两种情况下,程序输出都是
2 5 4 8 6
0 0 0 0 0
如果您需要可变长度数组,请使用标准容器std::vector<int>
。
例如
#include <iostream>
#include <iomanip>
#include <vector>
int main()
{
std::vector<int> array = { 2, 5, 4, 8, 6 };
for ( int x : array ) std::cout << x << ' ';
std::cout << std::endl;
array.clear();
std::cout << "array is empty - " << std::boolalpha << array.empty() << std::endl;
return 0;
}
程序输出
2 5 4 8 6
array is empty - true
代替array.clear();
,程序中也可以使用array.resize( 0 );
。