我真的很服,用迭代器所做出来的绑定数组.
#include "iostream"
void main(){
int array[]= {1,2,3,3,4,54,5};
int *begin = &array[7]; //这就必须知道数组中元素的个数.
for(int *itertaor=array/*\*itertaor = &array[0]*/;itertaor!=begin;++itertaor){
cout << *itertaor <<endl;
}
/*
using namespace std;
int *begin = &arry;
相当于:
vector<int> array{1,2,3,4,4,,4,2};
vector<int>::itertaor it = begin.begin();
for(it;it!=array;++it){
//doSomething.
}
*/
}
而且一般容器可以使用begin(),不过为C++11所说的特性(摔
懒得写头文件..
int array[]={1,2,23,3,12,31};
int *itertaor = begin(array);//第一个元素.
int *itertaorEnd = end(array);
for(itertaor;iterataor!=itertaorEnd;itertaor){
//output on screen
}
回顾一下constexpr关键字吧.
就是限定为常量表达式,但也是个废物,Visual Stdio2010不认它。
常用修饰:
constexpr int k;
还有就是,如果想让指针向前移动,直接自加:
int array[]={},*begin=&array;
*begin +=2;
cout << *begin <<endl;
/*
千万不要这种迭代器代码!
int array[] = {},*begin = &array[0];
*begin =2; //这样会直接复制!!
*/
auto
真的是万恶,如果两个指针进行四则运算的话,那么由上面的代码可以得出:
int array[]={1,2,3};
int *begin = array[0];
int *end = array[2];
auto result =begin * end;// 这个应该可以把。