Pra*_*rav 6 c++ arrays pointers initialization
如何用另一种(也许更短的)方式写这个?有没有更好的方法在C++中初始化已分配的数组?
int main(void) {
int* a;
a = new int[10];
for (int i=0; i < 10; ++i) a[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*rav 37
int *a =new int[10](); // Value initialization
Run Code Online (Sandbox Code Playgroud)
ISO C++ Section 8.5/5
对值类型T的对象进行值初始化意味着:
- 如果T是具有用户声明的构造函数(12.1)的类类型(第9节),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化是错误的);
- 如果T是没有用户声明的构造函数的非联合类类型,则T的每个非静态数据成员和基类组件都是值初始化的;
- 如果T是数组类型,则每个元素都是值初始化的;
- 否则,对象被零初始化
对于术语之间的差异zero initialization,value initialization并default initialization阅读此内容
Bri*_*ndy 22
std::vector<int> vec(10, 0);
int *a = &vec.front();
Run Code Online (Sandbox Code Playgroud)
Jus*_*ini 20
三种方式怎么样?
1. int *a = new int[10]();
2. std::vector<int> a(10, 0);
3. int *a = new int[10];
memset(a, 0, sizeof(int) * 10);
Run Code Online (Sandbox Code Playgroud)
由于受欢迎的需求,还有更多:
4. int *a = new int[10];
std::fill(a, a + 10, 0);
5. std::vector<int> a(10);
std::fill(a.begin(), a.end(), 0);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5410 次 |
| 最近记录: |