| Цитата(borisbn) | | А почему не так... |
То был лишь пример, на самом деле позиции итераторов могут быть где угодно, хоть посередине текста.
| Цитата(borisbn) | | по поводу преимуществ Qt-контейнеров перед stl: расширенный набор функций, например QList::takeFirst() |
Это да, согласен там много чего удобного =]
| Цитата(borisbn) | | недостатки: невозможность использование своего классика, написанного с использованием Qt, в простых приложениях, где в Qt нет необходимости |
Ну.. я какбы пишу скриптовыя язык, так что думаю этим можно пожертвовать.
з.ы. провел несколько грязных тестов... от результатов в шоке, не думал что qt может быть настолько шустрее Компилировал в QT Creator(release) вот код
| Код | #include <QString> #include <QVector> #include <string> #include <vector> #include <ctime> #include <iostream>
double execTime (clock_t beg, clock_t end) { double result = (beg - end) / (CLOCKS_PER_SEC/1000); return result; }
int main (int argc, char* argv[]) { /* vectors test */ std::cout << "\nstd::vector + std::string\n"; for (int j = 0; j < 100; j++) { std::string str = "Hello World!\n"; clock_t begin = clock(); std::vector<std::string> v1, v2; for (int i = 0; i < 100000; i++) v1.push_back(str); for (int i = 0; i < 100000; i++) v2.push_back(v1.at(i)); clock_t end = clock(); std::cout << execTime(end, begin) << ", "; if (j % 5 == 0) std::cout << "\n"; } std::cout << "\nstd::vector + QString\n"; for (int j = 0; j < 100; j++) { QString str = "Hello World!\n"; clock_t begin = clock(); std::vector<QString> v1, v2; for (int i = 0; i < 100000; i++) v1.push_back(str); for (int i = 0; i < 100000; i++) v2.push_back(v1.at(i)); clock_t end = clock(); std::cout << execTime(end, begin) << ", "; if (j % 5 == 0) std::cout << "\n"; } std::cout << "\nQVector + std::string\n"; for (int j = 0; j < 100; j++) { std::string str = "Hello World!\n"; clock_t begin = clock(); QVector<std::string> v1, v2; for (int i = 0; i < 100000; i++) v1.push_back(str); for (int i = 0; i < 100000; i++) v2.push_back(v1.at(i)); clock_t end = clock(); std::cout << execTime(end, begin) << ", "; if (j % 5 == 0) std::cout << "\n"; } std::cout << "\nQVector + QString\n"; for (int j = 0; j < 100; j++) { QString str = "Hello World!\n"; clock_t begin = clock(); QVector<QString> v1, v2; for (int i = 0; i < 100000; i++) v1.push_back(str); for (int i = 0; i < 100000; i++) v2.push_back(v1.at(i)); clock_t end = clock(); std::cout << execTime(end, begin) << ", "; if (j % 5 == 0) std::cout << "\n"; } return 0; }
|
вот результаты
| Код | std::vector + std::string 25, 18, 17, 18, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 18, 18, 18, 18, 17, 17, 18, 18, 18, 17, 18, 18, 18, 18, 18, 18, 17, 18, 17, 17, 17, 17, 17, 20, 18, 18, 21, 26, 19, 19, 18, 17, 18, 18, 18, 18, 18, 18, 17, 18, 18, 18, 18, 17, 18, 18, 18, 18, 18, 17, 18, 18, 17, 18, 18, 18, 18, 17, 18, 19, 17, 18, 18, 18, 18, 17, 18, 18, 19, 19, 19, 18, 18, 18, 17, 18, 17, 17, 18, 18, std::vector + QString 12, 10, 11, 11, 11, 11, 10, 11, 11, 11, 12, 10, 11, 11, 11, 12, 10, 11, 11, 11, 11, 11, 12, 11, 12, 12, 11, 11, 11, 11, 12, 12, 11, 12, 11, 11, 11, 11, 10, 11, 11, 11, 10, 11, 12, 11, 11, 11, 11, 12, 11, 12, 11, 11, 11, 11, 11, 11, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 11, 12, 11, 11, 10, 11, 10, 11, 11, 11, 11, 11, 11, 10, 11, 10, 11, 11, 11, 10, 11, 11, 11, 11, 11, 10, 11, 11, 11, 11, QVector + std::string 34, 34, 33, 33, 34, 36, 34, 33, 34, 32, 34, 34, 32, 34, 34, 33, 36, 34, 36, 37, 35, 36, 36, 39, 33, 34, 32, 33, 32, 33, 33, 33, 34, 33, 32, 34, 34, 35, 32, 34, 34, 33, 34, 33, 34, 34, 33, 32, 32, 34, 32, 34, 32, 33, 33, 33, 33, 33, 33, 33, 32, 33, 34, 34, 32, 33, 35, 33, 34, 33, 34, 34, 32, 34, 36, 33, 33, 34, 34, 33, 33, 33, 34, 34, 32, 33, 33, 33, 34, 33, 33, 32, 32, 33, 33, 33, 34, 33, 32, 33, QVector + QString 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 5, 6, 6, 5, 5, 5, 6, 6, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 6, 5, 5, 6, |
|