请高手指点,在线给分:stl list 中如何取得指定位置的值?比如倒数第三个。 stl list 中如何取得指定位置的值?比如倒数第三个。我按照一定规律把很多的结构数据存入list,现在想按原有的顺序获取最后的n个,如何做?因为我发现,不能用下标,也很难取得固定位置的iterator,请高手指点。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 仅仅取最后几个的话可以用下面的方法:int i = 0;for( i = 0; i < n && !list.empty(); i++ ){ ... = list.back(); // 每次取最后一个 从而得到最后n个数}// 得到第n个数if( n > list.size() ) return;list<T>::iterator it;i = 0;for( it = list.begin(); it != list.end(); it++ ){ i++; if( n == i ) break;}... = *it; // 得第n个数好像list 没有重载[]操作符。 list不提供随机访问,所以不能用下标直接访问到某个位置的元素,要访问list里的元素只能遍历,不过你要是只需要访问list的最后N个元素的话,可以用反向迭代器来遍历:std::list<int> l;l.push_back(1);l.push_back(2);l.push_back(3);for (std::list<int>::reverse_iterator it = l.rbegin(); it != l.rend(); ++it){ std::cout << *it << std::endl;}或者改用vector,vector可以直接用下标访问到任意元素。 看例子#include <iostream>#include <list>#include <algorithm>using namespace std;int main(){ list<int> l; for(int i=0;i<10;i++) l.push_back(i); list<int>::iterator i = l.end(); advance( i , -3 ); cout<<*i<<endl; return 0;} 你要随机存取的话,换个容器吧,vector挺好用, VC与sql2000连接 创建弹出式菜单 请教:如何查询表中的最后n记录 vc6中的问题,求教各位同仁 xml之中的CDATA字段,用vc怎样写进数据? 非绝顶高手不能解决的界面问题?CListView 编辑问题...... 怎样编程序运行脚本来更改ip地址等信息?请指教。 消息不断涌出(bound check问题) 匈牙利表示法? 谁知道lib和dll的关系,lib和dll里面的数据是如何组织的,详细资料哪里有? 高分求问题解决:使用visual studio 2005建立数据库连接时出错? 关于SetWindowPos的最后一个参数
int i = 0;
for( i = 0; i < n && !list.empty(); i++ )
{
... = list.back(); // 每次取最后一个 从而得到最后n个数
}// 得到第n个数
if( n > list.size() )
return;list<T>::iterator it;
i = 0;
for( it = list.begin(); it != list.end(); it++ )
{
i++;
if( n == i )
break;
}
... = *it; // 得第n个数好像list 没有重载[]操作符。
l.push_back(1);
l.push_back(2);
l.push_back(3);for (std::list<int>::reverse_iterator it = l.rbegin();
it != l.rend(); ++it)
{
std::cout << *it << std::endl;
}或者改用vector,vector可以直接用下标访问到任意元素。
#include <iostream>
#include <list>
#include <algorithm>
using namespace std;int main()
{
list<int> l;
for(int i=0;i<10;i++)
l.push_back(i);
list<int>::iterator i = l.end();
advance( i , -3 );
cout<<*i<<endl;
return 0;
}