我最近在 StackOverflow 上阅读了关于What is the copy-and-swap idiom 的答案?并且知道复制和交换习语可以
避免代码重复,并提供强大的异常保证。
但是,当我查看 SGI STL deque
implementation时,我发现它没有使用成语。我想知道为什么不,如果成语在某种程度上像“最佳实践”?
deque& operator= (const deque& __x) {
const size_type __len = size();
if (&__x != this) {
if (__len >= __x.size())
erase(copy(__x.begin(), __x.end(), _M_start), _M_finish);
else {
const_iterator __mid = __x.begin() + difference_type(__len);
copy(__x.begin(), __mid, _M_start);
insert(_M_finish, __mid, __x.end());
}
}
return *this;
}