首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::list<>::splice会使迭代器失效。基本原理?

std::list<>::splice会使迭代器失效。基本原理?
EN

Stack Overflow用户
提问于 2012-07-06 05:20:31
回答 2查看 849关注 0票数 11

我想知道让std::list<>::splice来使引用拼接到新容器中的子序列的迭代器无效的基本原理是什么。这在我看来有点不合逻辑,特别是在标准std::container::swap规范的基础上。根据语言标准,std::container::swap不会使任何迭代器无效。这是一个非常合理的实用规范。然而,我想说的是,std::list<>::splice也会从迭代器保留行为中获益良多。

我知道基于迭代器可达性等概念可能会有一些纯粹的学术考虑,但同时splice是一个std::list-specific操作,这意味着为它提供定制的规范通常不会对splice设计造成严重的概念性破坏。

那是什么呢?它会不会使我无法识别的std::list的一些实际实现变得非法或过于复杂?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-06 05:29:41

在C++11中,splice不会使迭代器无效,但会使它们引用*this容器中的相应元素。在23.3.5.5中对此进行了描述。

票数 8
EN

Stack Overflow用户

发布于 2012-08-11 08:42:00

如果容器有定制的,不相等的(非兼容的)分配器,你不能交换指针,你别无选择,只能真正的复制元素。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11352742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档