Pochodzę ze świata Python
, uważam, że funkcja std::iota
jest bardzo ograniczona. Dlaczego interfejs jest ograniczony, aby nie pobierać żadnego UnaryFunction
?std :: iota jest bardzo ograniczony
Na przykład można przekonwertować
>>> x = range(0, 10)
do
std::vector<int> x(10);
std::iota(std::begin(x), std::end(x), 0);
Ale jak można by zrobić:
>>> x = range(0,20,2)
lub nawet
>>> x = range(10,0,-1)
Wiem, że to jest trywialne, aby napisać jedną taką funkcję lub użyć funkcji Boost, ale doszedłem do wniosku, że komitet C++ musiał ostrożnie wybrać ten projekt. Tak więc wyraźnie brakuje mi czegoś z C++ 11.
można użyć std :: ' przekształcać 'jeśli chcesz wykonać inną operację nad wektorem. –
Zobacz http://stackoverflow.com/q/1977339/2301450 – vaultah
Spójrz na std :: generate, ale najważniejsze jest to, że nie ma jeszcze eleganckiego standardowego rozwiązania biblioteki w C++. – MikeMB