I was learning some builtin functions in STL. And I wrote these code.
#include <bits/stdc++.h>
int main() {
std::deque<int> tmp{1, 2, 3};
std::transform(tmp.begin(), tmp.end(), std::back_insert_iterator<std::deque<int>>(tmp), std::negate<>());
std::copy(tmp.begin(), tmp.end(), std::ostream_iterator<int> (std::cout, "\n"));
std::vector<int> now{1, 2, 3};
std::transform(now.begin(), now.end(), std::back_insert_iterator<std::vector<int>>(now), std::negate<>());
std::copy(now.begin(), now.end(), std::ostream_iterator<int> (std::cout, "\n"));
return 0;
}
And I compile this code, with GCC 6.1.1, option -Wall -std=c++14. The the output of the code was:
1 2 3 -1 -2 -3 1 2 3 -1 0 -3
In my opinion, the 0 in the output should be -2. Am I wrong? If I use the back_insert_iterator wrong, please point it out. Thank you. If not, is this a bug for GCC 6.1.1? Feel free to compile this code on your own computer with different compiler and share your result. Thank you for the help. :)
UPD
I use the iterator wrong, push_back may cause relocation. CLOSED. Thank you again for the help.