初始化基本类型
回答
fill_n函数可以是你正在寻找的。它将为您的数组的n个第一个值分配一个特定的值。
double *aPtr = new double[10];
std::fill_n(aPtr, 10, -1); // Fill the aPtr array with the value -1 for the 10 first values.
我不知道一个具体的方法来直接用声明中的一个相同的值填充它。
如果u要初始化双和设定值的阵列,以0 u可以使用:
double* aPtr = (double*)calloc(10,sizeof(double));
如果u想decleration后元件的设定值u可以使用:
double *aPtr = new double[10];
memset(aPtr,value,size);
同样的问题和你的回答详细:
问题是在行星C++而不是C –
或'double * aPtr = new double [10]();' –
c&C++ dosn't有内存分配的缺陷,在使用'calloc'后你可以调用aPtr [1 ] = 10.对于C++我链接到一个答案 –
可以使用std::fill_n:
std::fill_n(aPtr , 10, -1);
对于这样小的阵列可以编写显式
double *aPtr = new double[10]
{
ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1, ex -1
};
然而,对于更大的阵列,应使用一些标准的算法,例如std::generate
,std::generate_n
,std::fill
,std::fill_n
,std::for_each
或甚至某种类型的循环。
例如
std::generate(aPtr, aPtr + 10, [value = ex - 1]{ return value; });
或
std::generate_n(aPtr, 10, [value = ex - 1]{ return value; });
或
std::fill(aPtr, aPtr + 10, ex - 1);
或
std::fill_n(aPtr, 10, ex - 1);
或
std::for_each(aPtr, aPtr + 10, [value = ex - 1](auto &x){ x = value; });
如果编译器不支持初始化捕获例如,您可以
std::generate(aPtr, aPtr + 10, [=]{ return ex - 1; });
我*认为*当OP写“ex -1”他的意思是“例如,-1” - 我可能是错误的,但... –
@PaulR我认为这不是非常重要。:) –
正确 - 我只是认为这对读者来说可能有点困惑。 –
您可以使用统一的初始化初始化基本类型为零写。
double *aPtr = new double[10] {}
这将零出创建的数组。您也可以使用“()”而不是“{}”在C++ 03中执行此操作。
但是,这不会将所有元素初始化为特定值。如果你写new double[10] {-1.0}
你会得到一个阵列,第一个元素是-1.0
和其他九个 - 0.0
。
您可以使用类似这样的初始化程序列表指定所有元素,但对于大型数组不可伸缩。相反,我相信在致电new
后使用std::fill_n
或std::fill
是更好更简单的解决方案。
如果你真的不想有循环(即使在算法中),你可以使用可变参数模板来生成一个初始化列表,但这需要一些工作才能使它正常工作。
- 1. 基本类型的统一初始化?
- 2. 基本类型初始化C++
- 3. 初始化基类
- 4. 初始化内置类型初始化
- 5. 部分初始化基类
- 6. 模板基类初始化
- 7. 拷贝构造函数初始化基本数据类型
- 8. 默认初始化为C的基本类型是什么?
- 9. 类型初始化例外
- 10. 无法初始化类型
- 11. 的IntelliTrace:类型初始化
- 12. 初始化Uri类型
- 13. 初始化泛型类
- 14. 初始化对象类型
- 15. 初始化简单类型
- 16. 无法初始化类型
- 17. 类变量将基类后初始化
- 18. 矢量和原始类型初始化
- 19. 切片类型的初始化方法无法初始化
- 20. C#初始化整型数据类型
- 21. 从抽象类型初始化子类
- 22. 初始化类
- 23. 类初始化
- 24. 类初始化
- 25. 初始化类
- 26. 在派生类初始化列表中初始化模板基类成员类型
- 27. 宅基地初始化问题 - 宅基地已经初始化
- 28. C++:“Field'object_var'必须初始化”在基类
- 29. 初始化是POD的基类struct
- 30. 公共基类的初始化
你的意思是,用特定的相同值初始化数组中的每一个double? – Isuka
是的,先生。这是真的Isuka。 – mintbox
为什么不'std :: vector'? – leemes