使用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:存储两个指针的差值

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/81197384