C++ uninitialized_copy的问题
我只有5个元素,
即 size()/2=2
每个栈的长度是2
a拷贝了 0 1两个元素
b拷贝 2 3两个元素
为什么第五个元素 《5》,会被拷贝到b的栈内部, 2 3已经占满栈的空间,此时并没有扩展空间
还有我这个是移动的迭代器,移动后元素应该是未定义的,可是为什么 还是能输出1 2 3 4 5
元素类型是int
回答:
为什么第五个元素 《5》,会被拷贝到b的栈内部, 2 3已经占满栈的空间,此时并没有扩展空间
你要求拷贝 3 个元素,自然会拷贝 3 个。uninitialized_copy
并不知道你的目标空间用完了。
先未分配的内存写,这是未定义行为,未定义行为,什么都可能发生。
还有我这个是移动的迭代器,移动后元素应该是未定义的,可是为什么 还是能输出1 2 3 4 5
移动后的元素,一般会处于一个 合法但不确定 的状态,并不是未定义的。你不能依赖的它还是原值(也许某个实现就不是原值了),但是它一定有一个合法的值,也许是原值,也许不是。
以上是 C++ uninitialized_copy的问题 的全部内容, 来源链接: utcz.com/p/192382.html