1. 程式人生 > >使用C風格陣列初始化vector陣列

使用C風格陣列初始化vector陣列


#include <iostream>
#include <vector>
using namespace std;
/*
總結:使用陣列初始化vector陣列:必須指出陣列第n個元素以及陣列n+x元素的下一位置的地址
如果超過原陣列的下一個元素的範圍,就會把超出部分初始化為垃圾數字
*/
int main()
{
	const size_t arr_size = 6;
	int arr[arr_size] = {0, 1, 2, 3, 4, 5};
	vector<int> vec0(arr, arr+arr_size);   
	for (vector<int>::iterator i = vec0.begin(); i!=vec0.end(); ++i)  //6
		cout << *i << ends;   //0, 1, 2, 3, 4, 5
	cout << endl;
	vector<int> vec1(arr, arr + arr_size+1);
	for (vector<int>::iterator i = vec1.begin(); i != vec1.end(); ++i)
		cout << *i << ends;   //0, 1, 2, 3, 4, 5,垃圾
	cout << endl;
	vector<int> vec2(arr+1, arr + 3);
	for (vector<int>::iterator i = vec2.begin(); i != vec2.end(); ++i)
		cout << *i << ends;  // 1, 2
	system("pause");
}

1、程式中要儘量使用string陣列

2、編譯器擴充套件:特定編譯器為語言新增的特性。依賴於編譯器開展的程式很難移植到其他的編譯器

3、複合型別:使用其他型別定義的型別。如陣列,指標,引用

4、const void *:可以指向任意const型別的指標型別。

5、delete[] p:釋放由new動態分配的陣列。p必須是指向動態建立陣列中第一個元素的陣列。

6、動態分配:在程式自由儲存區[堆]建立的物件。該物件一建立就一直存在,直到顯示釋放為止。

7、自由儲存區:程式用來儲存動態建立物件的記憶體區域

8、ptrdiff_t:儲存兩個指標的差值