vector中end()和begin()本身值的疑问
- C/C++ code
#include <vector>using namespace std;using std::vector;#include <stdio.h>void main(){ vector<int> iv1;vector<int>::iterator itve1;for(int i=0;iv1.size()!=1000;i++){ iv1.push_back(i);//在vector中存入1000个元素}printf("======%d\n",iv1.begin());printf("======%d\n",iv1.end());}
为什么begin()位置的值和end()位置的值是一样的?
vector不是顺序存储的吗?按道理,end()要比begin()大的,以递增的关系……
[解决办法]
你不要输出, 你单步跟踪试试,看一样不
[解决办法]
编译通不过
warning: cannot pass objects of non-POD type 'class __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >' through '...'; call will abort at runtime
[解决办法]
[解决办法]
楼主的眼睛花了吧。
- C/C++ code
#include <vector>#include <iostream>#include <stdio.h>using namespace std;int main(){ vector<int> iv1;for(int i=0;iv1.size()!=1000;i++){ iv1.push_back(i);//在vector中存入1000个元素}printf("======%d\n",iv1.begin());printf("======%d\n",iv1.end());return 0;}
[解决办法]
[解决办法]
对于list,LZ可以尝试着随机删除/插入一些节点,也许可以看到期望的结果。
不管怎样,看debugger中的memory dump会理解的更深入。
[解决办法]
楼主啊,你要是想研究,不要沉迷于表象,直接跳进去看源码
[解决办法]
[解决办法]
[解决办法]
- C/C++ code
#include <iostream>#include <vector>#include <stdio.h>using namespace std;int main(){ vector<int> v; for(int i=1; i<10;i++) v.push_back(i); vector<int>::iterator it; it = v.begin(); printf("begin:%d\n",*it); for(it = v.begin(); it!= v.end();it++) printf("next:%d-",*it); printf("\n"); printf("%d - %d \n",*v.begin(),*v.end()); printf("u2:%x - %x\n",&(*v.begin()),&(*v.end())); return 0;}