(int i = 0; i < 7; ++i) {
++x.at(i);
}
как быстрее увеличить на 1 N чисел в векторе длинной M?
А что, длина вектора здесь имеет значение?
🤷♀ так можно без цикла, чтобы сразу N элементов увеличились?
как минимум использовать [] вместо at()
Ок. Но цикл по любому нужен?
Без цикла никак не получится. Можно сделать чтобы цикл не был виден, через алгоритм.
int N = 2; std::vector<int> v = {1, 2, 3, 4, 5, 6, 7}; std::transform(v.begin(), v.begin() + N, v.begin(), [](auto && PH1) { return std::plus<int>()(std::forward<decltype(PH1)>(PH1), 1); });
можно упростить до такого int N = 2; std::vector<int> v = {1, 2, 3, 4, 5, 6, 7}; std::transform(v.begin(), v.begin() + N, v.begin(), [](int &arg) { return arg + 1; });
std::transform(v.begin(), v.end(), v.begin(), [](int arg) { return arg + 1; });
там сказано первые N чисел надо инкрементировать
тут же все увеличится
я написал выше, где N чисел
https://pastebin.com/hRm1RUWe похоже быстрее не получится.
Это типо мой вариант медленный?
Рой, нужная твоя помощь, тут борцы за скорость обхода массива проснулись
Ну так получилось, что STL-ный transform оказался медленнее))
я еще такой новичок, что троллить меня должно быть стыдно 😜
Ну человек тесты провел, я сомневаюсь, что тесты можно неправильно провести там...
Естественно можно
пусть страуса гоняют
Написать нормальный тест или бенчмарк не так просто, как кажется )
Ну, я кроме юнит-тестов мало что писал, пожалуй соглашусь
Нахера вообще нужны тесты?
Чтобы проверять работоспособность
А есть возможность проверить вот здесь? http://quick-bench.com/
не врубился как этим пользоваться
Обсуждают сегодня