Форум программистов, компьютерный форум CyberForum.ru

Скорость доступа к элементам вектора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Проблема с рандомом + помощь в создании алгоритма http://www.cyberforum.ru/cpp-beginners/thread335111.html
Такая штука - делаю одну прогу (игра напоминающая бомбермен)... Решил отдельнонаписать прожку в которой юзер начинает матч - боты сами ходят и коцают друг друга ... ПРОБЛЕМА, только и заключаеться в том, что движения их порой вызываю подозрения - наблюдаеться некая синхронность... Подскажите пожалуйста в чем проблема + подкиньте плз идею того, как реализовать движения ботов в соответствии с...
C++ Из цифр в буквы Скажите как перейти из цифрового номера буквы в ANSI обратно в букву. Как букву в цифру превратить я знаю cout<<(int)'A'; http://www.cyberforum.ru/cpp-beginners/thread335039.html
Решение суммы ряда C++
Не раз видел задачки типа "Дано вещественное число Х и целое число N (>0).Найти значение выражения 1-х^2/(2!)+x^4/(4!)-...+(-1)^n*X^(2*n)/((2*N)!) (N!=1*2*...*N). ... " , не понимал и откладывал в "дальний угол". Т.в. прошу, объясните подробно, как их решать? На что смотреть в первую очередь? Как я понимаю формула строится по последней части (...+(-1)^n*X^(2*n)/((2*N)!)), скорее всего я не...
Русский язык в консоли C++
Скажу сразу, что закрепленную тему я прочитал, но не очень понял, как это реализовать. Вот код, текст выводится неизвестными символами. Будьте добры, переделайте программу так, что отображался русский текст. Тогда на примере я и пойму, как его сделать. #include <iostream> using namespace std; int main() { cout << "Привет планета Земля\n"; system("PAUSE");
C++ Посоветуйте open source проект http://www.cyberforum.ru/cpp-beginners/thread334996.html
Посоветуйте, пожалуйста, хороший open-source проект на котором можно поучиться. Критерии: 1. Лицензия GNU/GPL, BSD etc. 2. Основные языки C/C++ 4. Платформа - Windows 3. Хорошая документация и структура 4. Качественный код 5. Невысокий уровень сложности 6. Русскоязычное сообщество разработчиков(опционально) Спс.
C++ Перемножение матриц. Нужен код для перемножения матрицы и столбца за минимально возможное время. Порядок матрицы ( и столбца ) огромен - около 100000. Помогите найти оптимальный код! Ищу уже 2 день... что-то безрезультатно как то((( подробнее

Показать сообщение отдельно
snayperAlfa
2 / 2 / 1
Регистрация: 13.08.2008
Сообщений: 84

Скорость доступа к элементам вектора - C++

21.07.2011, 16:56. Просмотров 1635. Ответов 11
Метки (Все метки)

Всем привет!

Использую вектор и интеерсует вопрос скорости выбора элементов из него. У вектора есть метод vector.at(int index), который вернет мне элемент по заданному индексу. Также к вектору можно добраться через итераторы. ПО идее через итераторы доступ должен быть быстрее, но на практике выходит что доступ через vector.at(int index) быстрее минимум в 3 раза на векторе в 512 элементов. Почему так? Кто виноват и как еще ускорить доступ к элементам вектора?


Вот кусок кода.
Время измеряется в другом месте программы

C++
1
2
3
4
5
6
7
       INT64 time1, time2;
 
    time1 = rdtsc();
    vector_3 = CharIntBitConverter::VectBitsToVectChar(vector_2);
    time2 = rdtsc();
 
    std::cout<<(time2-time1)<<"\n";
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/*
                //Работает в 2 раза медленее
                for(std::vector<boost::uint8_t>::const_iterator it = input.begin(); it != input.end(); it++){               
                    temp1.push_back(*it);
                    j++;
 
                    if (j == 8) {
                        j = 0;
                        //vect_10.push_back(CharIntBitConverter::BitsToChar(temp1));
                        BitsToChar(temp1,temp_byte);
                        vect_10.push_back(temp_byte);
 
                        temp1.clear();
                    }
                }
                */
 
 
                //Лучший вариант
                for(boost::uint32_t i = 0; i < input.size(); i++){
                    temp1.push_back(input.at(i));
                    j++;
 
                    if (j == 8) {
                        j = 0;
                        BitsToChar(temp1,temp_byte);
                        vect_10.push_back(temp_byte);
                        temp1.clear();
                    }
                }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru