C++的初始化方法很多,各种初始化方法有一些不同。
(1): vector<int> ilist1;
默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。
(2): vector<int> ilist2(ilist);
vector<int> ilist2 = ilist;
两种方式等价 ,ilist2 初始化为ilist 的拷贝,ilist必须与ilist2 类型相同,也就是同为int的vector类型,ilist2将具有和ilist相同的容量和元素
(3): vector<int> ilist = {1,2,3.0,4,5,6,7};
vector<int> ilist {1,2,3.0,4,5,6,7};
ilist 初始化为列表中元素的拷贝,列表中元素必须与ilist的元素
类型相容,
本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。
(4): vector<int> ilist3(ilist.begin()+2,ilist.end()-1);
ilist3初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与ilist3 的元素类型相容,在本例中ilist3被初始化为{3,4,5,6}。
注意:
由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如,用一个double的list的范围来初始化ilist3是可行的。另外由于构造函数只是读取范围中的元素进行拷贝,因此使用普通迭代器还是const迭代器来指出范围并没有区别。这种初始化方法特别适合于获取一个序列的子序列。
(5): vector<int> ilist4(7);
默认值初始化,ilist4中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist4被初始化为包含7个0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。
(6):vector<int> ilist5(7,3);
指定值初始化,ilist5被初始化为包含7个值为3的int
内容主要来自于===> C++primer习题集(第五版)P198
C++的初始化方法很多,各种初始化方法有一些不同。(1): vector&lt;int&gt; ilist1; 默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。(2): vector&lt;int&gt; ilist2(ilist);vector&lt...
在用devcpp编译程序时发现,二维
vector
数组如果只定义的话,不指定元素个数也不进行
初始化
的时候会导致编译出错。
通常情况下,可以只提供
vector
对象容纳的元素数量而略去初始值。此时库会
创建
一个值
初始化
的元素初值,并把它赋给容器中的所有元素。这个初值由
vector
对象中元素的类型决定。
二维数组
初始化
方法
目前有以下两种:
第一种
初始化
方法
(以元素类型为int为例)
初始化
为1:
`vect...
(1):
vector
<int> ilist1;
默认
初始化
,
vector
为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种
初始化
方式适用于元素个数未知,需要在程序中动态添加的情况。
(2):
vector
<int> ilist2(ilist);
vector
<int> ilist2 = ...
Vector
创建
二维数组及代码实现
在C++中,可以使用`
vector
`来
创建
二维数组。下面是一个简单的示例代码,演示如何使用`
vector
`
创建
一个二维数组:
```cpp
#include <iostream>
#include <
vector
>
int main() {
// 定义二维数组的行数和列数
int rows = 3;
int cols = 4;
//
创建
一个二维
vector
,并
初始化
所有元素为0
std::
vector
<std::
vector
<int>> matrix(rows, std::
vector
<int>(cols, 0));
// 设置二维数组中的元素
matrix[0][0] = 1;
matrix[1][2] = 2;
matrix[2][3] = 3;
// 打印二维数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
std::c
2.13.1 #define和 #undef. 61
2.13.2 #if, #elif, #else和#endif. 62
2.13.3 #warning和# error. 63
2.13.4 #region和#endregion.. 63
2.13.5 #line.. 64
2.13.6 #pragma.. 64
2.14 C#编程规则...... 64
2.14.1 用于标识符的规则..... 64
2.14.2 用法约定..... 65
2.15 小结...... 71
第3章 对象和类型.... 72
3.1 类和结构...... 72
3.2 类成员...... 73
3.2.1 数据成员..... 73
3.2.2 函数成员..... 74
3.2.3 只读字段..... 88
3.3 结构...... 89
3.3.1 结构是值类型..... 90
3.3.2 结构和继承..... 91
3.3.3 结构的构造函数..... 91
3.4 部分类...... 92
3.5 静态类...... 94
3.6 Object类...... 94
3.6.1 System.Object
方法
..... 94
3.6.2 ToString()
方法
..... 95
3.7 小结...... 97
第4章 继承.... 98
4.1 继承的类型...... 98
4.1.1 实现继承和接口继承..... 98
4.1.2 多重继承..... 99
4.1.3 结构和类..... 99
4.2 实现继承...... 99
4.2.1 虚
方法
..... 100
4.2.2 隐藏
方法
..... 101
4.2.3 调用函数的基类版本..... 102
4.2.4 抽象类和抽象函数..... 103
4.2.5 密封类和密封
方法
..... 103
4.2.6 派生类的构造函数..... 104
4.3 修饰符...... 109
4.3.1 可见性修饰符..... 109
4.3.2 其他修饰符..... 110
4.4 接口...... 111
4.4.1 定义和实现接口..... 112
4.4.2 派生的接口..... 116
4.5 小结...... 118
第5章 运算符和类型强制转换.... 119
5.1 运算符...... 119
5.1.1 运算符的简化操作..... 120
5.1.2 三元运算符..... 121
5.1.3 checked和unchecked运算符..... 122
5.1.4 is运算符..... 123
5.1.5 as运算符..... 123
5.1.6 sizeof运算符..... 123
5.1.7 typeof运算符..... 124
5.1.8 可空类型和运算符..... 124
5.1.9 空接合运算符..... 124
5.1.10 运算符的优先级..... 125
5.2 类型的安全性...... 125
5.2.1 类型转换..... 126
5.2.2 装箱和拆箱..... 130
5.3 对象的相等比较...... 130
5.3.1 引用类型的相等比较..... 131
5.3.2 值类型的相等比较..... 132
5.4 运算符重载...... 132
5.4.1 运算符的工作方式..... 133
5.4.2 运算符重载的示例:
Vector
结构..... 134
5.5 用户定义的数据类型转换...... 141
5.5.1 执行用户定义的类型转换..... 142
5.5.2 多重数据类型转换..... 149
5.6 小结...... 152
第6章 委托和事件.... 153
6.1 委托...... 153
6.1.1 在C#中声明委托..... 154
6.1.2 在C#中使用委托..... 155
6.2 匿名
方法
...... 158
6.2.1 简单的委托示例..... 159
6.2.2 BubbleSorter示例..... 161
6.2.3 多播委托..... 164
6.3 事件...... 166
6.3.1 从客户的角度讨论事件..... 167
6.3.2 生成事件..... 169
6.4 小结...... 173
1.
vector
<int> list1; 默认
初始化
,最常用
此时,
vector
为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。 这种
初始化
方式适用于元素个数未知,需要在程序中动态添加的情况。
2.
vector
<int> list2(list); 或者
vector
<int> ilist2 = ilist; //拷贝
初始化
,"="
两种方式等价 , list2
初始化
为list 的拷贝, list必须与li.
```c++
std::
vector
<int> vec3 = {1, 2, 3, 4, 5}; //
创建
一个有5个元素的
vector
对象,元素分别是1,2,3,4,5
4. 通过拷贝构造函数
创建
vector
。
```c++
std::
vector
<int> vec4(vec3); //
创建
一个与vec3相同的
vector
对象
对于已经
创建
的
vector
,可以使用`assign()`函数或`resize()`函数来改变
vector
元素的个数和值。
1. 使用`assign()`函数指定新的元素值。
```c++
std::
vector
<int> vec5 = {1, 2, 3, 4, 5}; //
创建
有5个元素的
vector
对象
vec5.assign(3, 10); // 将vec5的元素个数改为3,所有元素的值都变成10
2. 使用`resize()`函数改变
vector
的元素个数,超出原来的范围的新元素使用默认值进行
初始化
(例如:0)。
```c++
std::
vector
<int> vec6 = {1, 2, 3, 4, 5}; //
创建
有5个元素的
vector
对象
vec6.resize(8); // 将vec6的元素个数改为8,新增的3个元素使用默认值0进行
初始化
在这里,`assign()`函数的第一个参数是新的元素个数,第二个参数是新的元素值;`resize()`函数的参数是新的元素个数。