I was trying to solve the following problem (irrelevant): 1281C - Cut and Paste and I noticed something interesting. I inserted into the end of deque in two ways:
Solution 1:
n = d.size();
for (int k = 0; k < n; k++)
d.push_back(d[k]);
Solution 2:
n = d.size();
d.insert(d.end(), d.begin(), d.begin() + n);
Both of these do exactly the same task of copying all the elements of the deque towards the end. However:
- Solution 1 — Accepted
- Solution 2 — Runtime Error!
The code for both of them is exactly the same besides the above mentioned lines.
Could someone please tell me why Solution 2 fails? Is it because the time complexity of insert
in deque is worse than push_back
for all elements? Does this mean you should never use insert
with deque?
Thank you for all your help.