将数组中的所有项目设置为没有for循环c ++的数字[重复]

Posted

技术标签:

【中文标题】将数组中的所有项目设置为没有for循环c ++的数字[重复]【英文标题】:Setting all items in an array to a number without for loop c++ [duplicate] 【发布时间】:2022-01-13 03:22:32 【问题描述】:

现在,要将数组中的所有项目设置为 0,我必须遍历整个项目来预设它们。

当声明数组时,是否有一个函数或快捷方式可以默认将所有值设置为特定数字?像这样:

int array[100] = 0*100; // sets to 0, 0, 0... 0

【问题讨论】:

如果你可以灵活地使用std::vector,那么你可以在构造过程中像std::vector<int> v (100 /* length */, 42 /* initial value */);一样初始化 0*100 看起来有点奇怪。一方面,0 * 100 == 0 并且正确 (answer of Denise)。另一方面,看起来重复 0 是为了表达。那是行不通的。而且,顺便说一句。 0 是这种方式的数组初始值设定项的唯一可能值。 这只是一个例子。 这只是一个例子。 是的,但有点令人困惑...... ;-) @SkyriderFeyrs 在 python 中是 [0]*3 -> [0, 0, 0] 而不是 [0*100] -> [0]。不相关:在 python 中的列表上使用乘法时要小心,你会成为changes in sublist are relected across the list 的受害者 【参考方案1】:
int array[100] = 0; 

应该做的工作 请参考cppreference

int a[3] = 0; // valid C and C++ way to zero-out a block-scope array
int a[3] = ; // invalid C but valid C++ way to zero-out a block-scope array

【讨论】:

这个只设置为0... 是的,对不起,根据你的例子,我认为具体的数字应该是 0。 int arr[100] = 1;导致数组的第一个位置为 1,其余 99 个位置为 0。【参考方案2】:

如果您想将所有值设置为0,那么您可以使用:

int array[100] = 0; //initialize array with all values set to 0

如果您想设置0 以外的其他值,则可以使用算法 中的std::fill,如下所示:

int array[100];  //not intialized here
std::fill(std::begin(array), std::end(array), 45);//all values set to 45

【讨论】:

【参考方案3】:

以后你应该使用 std::array 而不是 C 风格的数组。所以这变成了:

std::array<int,100> array;
array.fill(0);

【讨论】:

【参考方案4】:

如果要使用函数的返回值来初始化数组:

#include <algorithm>

int generateSomeValue( )

    int result  ;
    // some operations here to calculate result

    return result;


int main( )

    int array[ 100 ];
    std::generate( std::begin( array ), std::end( array ), generateSomeValue );

【讨论】:

【参考方案5】:

你应该使用比数组更灵活的向量。

#include <iostream>
#include <vector>

int main()

std::vector<int>v(100,10); // set 100 elements to 10

尝试运行这个: https://onlinegdb.com/2qy1sHcQU

【讨论】:

我很确定这只会初始化第一个元素。 godbolt.org/z/36e3EYKE1 是的,只有第一个元素。 @Jellyboy 你说得对,让我编辑

以上是关于将数组中的所有项目设置为没有for循环c ++的数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

c语言中 将数组列换行 行换列

JAVA数组如何实现逆序存放?

如何去掉一个数组的重复元素:数组去重

C++写的这段语句是怎么执行的?

怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat

C++ 中的高效循环缓冲区,将传递给 C 风格的数组函数参数