এটি স্ট্যান্ডার্ডের কোনও গ্যারান্টি নয়, তবে অন্য ডেটা পয়েন্ট হিসাবে, এলএলভিএমের লিবিসি ++ এরv.push_back(v[0])
জন্য নিরাপদ ।
libc ++ এরstd::vector::push_back
কলগুলি __push_back_slow_path
যখন মেমরিটি পুনর্বিবেচনার প্রয়োজন হয়:
void __push_back_slow_path(_Up& __x) {
allocator_type& __a = this->__alloc();
__split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1),
size(),
__a);
// Note that we construct a copy of __x before deallocating
// the existing storage or moving existing elements.
__alloc_traits::construct(__a,
_VSTD::__to_raw_pointer(__v.__end_),
_VSTD::forward<_Up>(__x));
__v.__end_++;
// Moving existing elements happens here:
__swap_out_circular_buffer(__v);
// When __v goes out of scope, __x will be invalid.
}
push_back
দিয়েছেন । অন্য একটি পোস্টার এতে একটি বাগ উল্লেখ করেছে , যেটি আপনি বর্ণনা করেছেন তা এটি সঠিকভাবে পরিচালনা করে না। অন্য কেউ, যতদূর আমি বলতে পারি, যুক্তি দিয়েছিলেন যে এটি কোনও বাগ ছিল না। এটি চূড়ান্ত প্রমাণ নয়, কেবল একটি পর্যবেক্ষণ saying