Мне хотелось бы узнать, есть ли более быстрый способ скопировать мои данные из mysqlpp :: storequeryresult в std :: vector.C++ mysqlpp :: storequeryresult и std :: vector
Мой пример выглядит следующим образом: Я сохраняю свой результат запроса с помощью query.store() в StoreQueryResult, и мой результат, например. стол с одним столбцом с удвоением в нем. Теперь я хочу скопировать эти двойники в std :: vector. То, как я делаю это прямо сейчас, - это получить доступ к каждому двойному с помощью оператора [] [] и скопировать его в мой вектор в цикле for.
Это работает, но это очень трудоемко, так как я копирую как 277000 двойных в цикле. Есть ли способ просто скопировать столбец в вектор? Дело в том, что мои другие функции используют std :: векторы в своих списках параметров. В качестве альтернативы я мог бы изменить свои функции, чтобы вызвать StoreQueryResult, я думаю, но я предпочел бы std :: vector.
Вот мой упрощенный код:
void foo()
{
vector<double> vec;
mysqlpp::StoreQueryResult sqr;
Query query;
query << "SELECT * FROM tablename";
sqr = query.store();
vec.reserve(sqr.num_rows());
vec.resize(sqr.size());
for(int i=0; i != vec.size(); i++)
{
vec[i] = sqr[i]["my_column"];
}
}
Я хочу что-то вроде:
vec = sqr["my_column"] // when my_column is a field with doubles
Thx заранее.
Martin
Пожалуйста, подумайте над добавлением кода примера, что вы делаете. – tomvodi
Вы резервируете этот целевой вектор до размера, эквивалентного количеству строк вашего SQR перед копией, не так ли? (* Введите код *). – WhozCraig
Вправо вектор имеет тот же размер, что и количество строк StoreQueryResult. – Martin