list::end()地址相关问题
2015-05-05 20:52
295 查看
标准库函数的list数据结构中,一旦list建立,end()函数的地址就是固定的,无论向list中push_back()还是erase()。
而相应改变的是存放数据的地址。
例如:list<int> numbers;
cout<<*(numbers.end())<<endl;
const int n=5;
for(int i=0;i<n;i++){
numbers.push_back(i);
}
list<int>::iterator current=numbers.begin();
while(current!=numbers.end()){
cout<<*(current)<<" ";
current++;
}
cout<<"Size: "<<numbers.size()<<endl; //输出为 "Size: 5"
list<int>::iterator pre=--current;
cout<<*(pre)<<endl;
current++;
cout<<*(current)<<endl; //此时current(--,++)扔指向numbers,end()的地址
cout<<*(numbers.end())<<endl;
//
numbers.push_back(5);
cout<<"Size: "<<numbers.size()<<endl; //输出为 "Size: 6"
cout<<*(--current)<<endl; //输出为:5
cout<<*(numbers.end())<<endl; //输出与上次相同
完整输出为:
1990332814
0 1 2 3 4
Size: 5
4
1990332814
1990332814
Size: 6
5
1990332814
。
由输出我们可以看出,end()函数所返回的地址不是list中最后项的地址。list的最后一项保存在end()函数返回地址的下一个低位地址上。
而相应改变的是存放数据的地址。
例如:list<int> numbers;
cout<<*(numbers.end())<<endl;
const int n=5;
for(int i=0;i<n;i++){
numbers.push_back(i);
}
list<int>::iterator current=numbers.begin();
while(current!=numbers.end()){
cout<<*(current)<<" ";
current++;
}
cout<<"Size: "<<numbers.size()<<endl; //输出为 "Size: 5"
list<int>::iterator pre=--current;
cout<<*(pre)<<endl;
current++;
cout<<*(current)<<endl; //此时current(--,++)扔指向numbers,end()的地址
cout<<*(numbers.end())<<endl;
//
numbers.push_back(5);
cout<<"Size: "<<numbers.size()<<endl; //输出为 "Size: 6"
cout<<*(--current)<<endl; //输出为:5
cout<<*(numbers.end())<<endl; //输出与上次相同
完整输出为:
1990332814
0 1 2 3 4
Size: 5
4
1990332814
1990332814
Size: 6
5
1990332814
。
由输出我们可以看出,end()函数所返回的地址不是list中最后项的地址。list的最后一项保存在end()函数返回地址的下一个低位地址上。
相关文章推荐
- Remove Nth Node From End of List问题及解法
- 关于用list_head 来计算结构体地址的问题
- Axure RP Pro - 相关问题 - Droplist下拉列表框部件在规格文档中不包括默认值
- 编译,链接相关的问题。-fPIC ,地址无关代码,等等
- Axure RP Pro - 相关问题 - 原型中Droplist“下拉列表”部件在IE6中总显示在最前面
- VSTO开发疑难问题汇集及相关资源地址
- java将一个List赋值给另一个List相关问题
- Java中的Arrays.asList(T... a)相关问题
- LeetCode算法问题8 —— Remove Nth Node From End of List
- 使用ajax传递数据时的地址等相关问题
- leetcode 题解 || Remove Nth Node From End of List 问题
- leetcode 题解 || Remove Nth Node From End of List 问题
- jQuery EasyUI相关问题及资源(未混淆的源码地址)
- android问题:从list集合中循环读取图片地址,使用异步下载,利用baseAdapter怎样显示到listView中
- LeetCode问题解答:19. Remove Nth Node From End of List
- 深度解析结构体类型地址偏移量相关问题
- from表单中action有地址,向后台提交参数的相关问题
- Axure RP Pro - 相关问题 - 在规格文档中动态面板中的droplist下拉列表框部件会重复输出选项列表
- c++中vector地址相关问题