社区
工具平台和程序库
帖子详情
如何获得list中第n个对象?
djhdu
2004-03-29 07:18:28
我有一个 std::list<CInfo *> m_InfoList;
我想获得第n个对象
CInfo GetInfo(int n)
{
std::list<CInfo *> Info_iter;
Info_iter=m_InfoList.begin()+nColumn;
if (Info_iter) //错误行
{
return *Info_iter;
}
return NULL;
}
如何写才正确呢?
...全文
1065
13
打赏
收藏
如何获得list中第n个对象?
我有一个 std::list m_InfoList; 我想获得第n个对象 CInfo GetInfo(int n) { std::list Info_iter; Info_iter=m_InfoList.begin()+nColumn; if (Info_iter) //错误行 { return *Info_iter; } return NULL; } 如何写才正确呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
student2002
2004-03-31
打赏
举报
回复
改成:
CInfo GetInfo(int n)
{
std::list<CInfo *>::iterator Info_iter;
Info_iter=m_InfoList.begin()+nColumn;
if (Info_iter!=m_InfoList.end()) //错误行
{
return *Info_iter;
}
return NULL;
}
sharkhuang
2004-03-30
打赏
举报
回复
list的iter没有随机属性!只能++ 不能[n]
北极猩猩
2004-03-30
打赏
举报
回复
list适合顺序访问和随机插入,如果经常要随机访问应该使用vector或deque
如果是偶尔要访问第n各元素,可以向上面一样,使用advance
wingfiring
2004-03-30
打赏
举报
回复
可以访问的,不过你要这样:
Info_iter=m_InfoList.begin();
std::advance(Info_iter, nColumn)
可能需要包含头文件:
#include <algorithm>
当然,advance之前,你必须保证list中有不少于nColumn个成员。
Bruceleexiaokan
2004-03-30
打赏
举报
回复
list的advance具有是线性开销。如果开销是主要考虑因素的话,可以采用vector。
vector::iterator具有random iterator type,advance是常数级开销。
Darkay_Lee
2004-03-30
打赏
举报
回复
设计有问题!要随机访问的话,不应该使用list
cgsw12345
2004-03-30
打赏
举报
回复
用iterator可以实现!
rorot
2004-03-29
打赏
举报
回复
list 可以访问第n个对象吗? 除非你抛除去前面得
saville
2004-03-29
打赏
举报
回复
list是链表啊,内存地址不连续的。你用Info_iter=m_InfoList.begin()+nColumn当然不行了
zhangyan_qd
2004-03-29
打赏
举报
回复
如果追究起来,list就是不让你随机访问的。如果要随机访问就应该用vector
allen_zhaozhencn
2004-03-29
打赏
举报
回复
CInfo GetInfo(int n)
{
std::list<CInfo *> Info_iter;
Info_iter = m_InfoList.begin();
int i = 0;
if (n > m_InfoList.size( ) )
throw ;
while(i < n)
{
// Info_iter++;//最好用前置
++Info_iter;
i++;
}
return *Info_iter;
}
这样行吗?
djhdu
2004-03-29
打赏
举报
回复
少判断了n超过size
weixiaohua
2004-03-29
打赏
举报
回复
CInfo GetInfo(int n)
{
std::list<CInfo *> Info_iter;
Info_iter = m_InfoList.begin();
int i = 0;
while(i < n)
{
Info_iter++;
i++;
}
return *Info_iter;
}
这样行吗?
list
stream: 对
List
中
的
对象
先进行排序再获取前n个
对象
本文介绍如何使用Java Stream API对
List
进行排序并获取前N个元素,包括基本整数排序及自定义
对象
排序,同时解决重复
对象
冲突。
python长度为n的
list
_python “
list
*n”的坑你得注意
探讨Python
中
使用列表复制(
list
×n)时遇到的问题,特别是当列表包含可变
对象
(如列表、字典)时的行为差异。
range(n)并没有生成一个
list
,同样的还有 map函数
博客主要介绍Python编程
中
range(n)和map函数的
对象
类型。通常人们下意识认为range(n)和map函数返回的是
list
,但实际上range(n)并非
list
,仅在for循环里自动变为
list
,在循环外需用
list
()转换;map函数返回的是特殊的map
对象
。
java8
List
截取前n条
本文详细介绍了在Java8
中
如何高效地从
List
中
截取前N条数据,包括创建
List
对象
、添加数据及使用stream和limit方法进行截取的全过程。
js
中
如何优雅修改一个多层嵌套
list
对象
的值
本文介绍了一种优雅地更新深层嵌套
对象
属性值的方法,通过创建
List
类封装
list
核心属性,支持简单赋值和map赋值,使复杂
对象
属性赋值更简洁,符合函数式编程习惯。
工具平台和程序库
24,852
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章