相关疑难解决方法(0)

spled()on std :: list和iterator invalidation

3参数形式list::splice()将单个元素从一个列表移动到另一个列表. SGI的文档明确声明所有迭代器,包括指向要移动的元素的迭代器仍然有效. Roguewave的文档没有说明splice()方法的迭代器失效属性,而C++标准明确声明它使所有迭代器和对被拼接元素的引用无效.

splicing()在实践中按照SGI的定义工作,但是我在微软的STL实现的调试/安全SCL版本中得到断言失败(解除引用无效迭代器)(严格遵循标准的字母).

现在,我正在使用list完全是因为我想在列表之间移动一个元素,同时保留指向它的迭代器的有效性.该标准对最初的SGI规范进行了极为无益的改变.

我该如何解决这个问题?或者我应该是务实,在沙把头(因为拼接并没有在实践中迭代器失效-甚至在MS的执行,一旦调试迭代器关闭).

c++ containers iterator list

11
推荐指数
1
解决办法
3401
查看次数

splice()在cpp中的功能

拼接如何工作?我在http://www.cplusplus.com/reference/list/list/splice/上看到了它

我无法从上面链接的代码中理解这部分内容:

mylist1.splice ( mylist1.begin(), mylist1, it, mylist1.end());
Run Code Online (Sandbox Code Playgroud)

c++ list

5
推荐指数
1
解决办法
3972
查看次数

标签 统计

c++ ×2

list ×2

containers ×1

iterator ×1