Может ли алгоритм потоковой передачи, например std::transform
или std::partial_sum
, считывать и записывать в одно и то же место?
Например, следующий код работает в gcc, но я не уверен, что это не так«просто случайность» и компилятор может взломать код для его оптимизации.
#include <algorithm>
#include <iostream>
#include <numeric>
#include <vector>
int main()
{
int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
std::vector<int> vec(arr, arr + sizeof(arr)/sizeof(arr[0]));
std::partial_sum(vec.begin(), vec.end(), vec.begin());
for(std::vector<int>::iterator iter = vec.begin(); iter != vec.end(); iter++)
std::cout << *iter << std::endl;
return 0;
}