Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
49 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 96
1

Самый быстрый способ дополнить вектор массивом

08.12.2018, 17:15. Показов 1565. Ответов 9
Метки нет (Все метки)

есть вектор заполненный нулями:
C++
1
vector<int> v(100000);
есть большой массив:
C++
1
2
3
    int ar[100000];
    for (int i = 0; i < 100000; ++i)
        ar[i] = 123;
Нужно максимально эффективно дополнить вектор содержимым массива.
самое быстрое что получилось:
C++
1
2
3
vector <int> v (200000);
for (int i = 0, j =100000; i < 100000; ++i, ++j)
    v[j] = ar[i];
можно ли быстрее?

интересно, что такая запись
C++
1
vector<int> v(ar, ar + 200000);
работает в примерно 40 раз быстрее)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2018, 17:15
Ответы с готовыми решениями:

Самый быстрый способ решения задачи a+b
несколько раз ходил на олимпиады, во многих из них в пробном туре даётся задача а+б, решаю её...

Какой самый быстрый способ решения СЛАУ?
Доброго дня. Помогите выбрать СЛАУ(системы линейных алгебраических уравнений), которым СЛАУ будет...

Считать квадратную матрицу. Какой самый быстрый способ это сделать?
Какие самые быстрые способы считывания в с++? Пример : мне надо считать квадратную матрицу. Какой...

Memory shift или самый быстрый способ перемещения блока памяти
int* dataField = new int{0}; for (int i = 0; i &lt; 50; i++) dataField = 777; //тут должен быть...

9
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.12.2018, 18:30 2
Лучший ответ Сообщение было отмечено Maks53 как решение

Решение

Ты на release-версии измерял?
0
49 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 96
08.12.2018, 19:24  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Ты на release-версии измерял?
нет, в дебаге.
0
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.12.2018, 19:30 4
Ну вот.
1
49 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 96
08.12.2018, 22:01  [ТС] 5
но и в релизе оказалось, что скорости существенные. самым быстрым оказалось просто создать новый массив и пробежавшись заполнить его. на 200 тыс элементов ушло меньше микросекунды. против 200 микросекунд на инициализацию у записи
C++
1
std::vector<int> v(200000);
0
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.12.2018, 22:18 6
Заполнение циклом и вот этот конструктор сравнивались? А массив через new создан?
0
1715 / 564 / 187
Регистрация: 12.03.2016
Сообщений: 2,165
08.12.2018, 22:32 7
Код выкладывай полностью, а то не понятно что ты там мудришь.
0
49 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 96
08.12.2018, 22:48  [ТС] 8
Цитата Сообщение от Manowar Посмотреть сообщение
Код выкладывай полностью, а то не понятно что ты там мудришь.
C++
1
2
3
4
5
6
7
8
9
    auto start = chrono::steady_clock::now();
 
    int ar[200000];
    for (int i = 0; i < 200000; ++i)
        ar[i] = 123; // если написать ar[i] = i; время совсем другое - 75 микросек
 
    auto end = chrono::steady_clock::now();
    auto timepassed = chrono::duration_cast<chrono::nanoseconds>(end - start).count();
    cout << timepassed << endl;
компилятор соптимизировал пятую строчку?
0
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.12.2018, 22:54 9
У тебя массив статический. Чтобы сравнивать с vector, надо через new создавать.
0
49 / 2 / 0
Регистрация: 26.09.2014
Сообщений: 96
08.12.2018, 23:40  [ТС] 10
Цитата Сообщение от nmcf Посмотреть сообщение
У тебя массив статический.
Точно) как я мог забыть! мне ж вдалбливали это на первом курсе
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2018, 23:40

Самый быстрый способ посчитать сумма элементов матрицы, находящихся в матрице
Здравствуйте форумчане! Подскажите мне самый быстрый способ нахождении суммы элементов матрицы,...

Каков самый быстрый способ узнать количество строк в оргомном текстовом файле в Windows?
Есть текстовый файл с кучей строк (размер файла ~ 1Гб). Как можно максимально быстро узнать кол-во...

как заполнить вектор векторов прямо в программе (самый быстрый метод)
почему не работает? #include&lt;cstdio&gt; #include &lt;vector&gt; using namespace std; vector&lt;int&gt; a;...

Самый быстрый способ найти min
Какой самый быстрый способ найти минимальный элемент в массиве? При переборе через foreach времени...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru