容器初始化:C c(b,e)不包括e吧?

方紫涵 2014-02-23 02:21:50
1)容器初始化:C c(b,e),b和e是迭代器,意思是用b和e之间的元素初始化c(包括b但是不包括e)

2)c++ 设计成不包括e这样的目的是啥 ?,
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-02-26
  • 打赏
  • 举报
回复
对于包含最后元素,空容器就会出现结束指针小于开始指针的情况。
幻夢之葉 2014-02-24
  • 打赏
  • 举报
回复
2L ++ 为了容器能更广泛适用用模板算法!
jiandingzhe 2014-02-24
  • 打赏
  • 举报
回复
不包括后界。 因为这样可以用迭代器范围:

for (iterator i=something.begin(); i!=something.end(); i++)
starytx 2014-02-24
  • 打赏
  • 举报
回复
lz可参考《c++ primer 第四版》的271页顶部,关于“使用左闭合区间的编程意义”
方紫涵 2014-02-24
  • 打赏
  • 举报
回复
Pump天天学习 2014-02-23
  • 打赏
  • 举报
回复
如果e是超出末端的迭代器呢 即e=vec.end();
turing-complete 2014-02-23
  • 打赏
  • 举报
回复
这是一个表达完整性的问题。 如果设计成一个闭合区间,怎么初始化一个空的容器?
vipcxj 2014-02-23
  • 打赏
  • 举报
回复

Container c;
for (Container::iterator iter = c.begin(); iter != c.end(); ++ iter)
   ...
如果不包括end,那么上面的代码就很自然,否则就杯具了。或许LZ觉得可以用

iter < c.end()
代替,当包括end是,小于改成小于等于。但这样是有巨大问题的,因为很多容器的迭代器是不支持比大小。但不等于对于基本所有迭代器都是支持的。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧