作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想知道是否有更快的方法将我的数据从 mysqlpp::storequeryresult 复制到 std::vector。
我的例子如下:我用 query.store() 将我的查询结果存储在 StoreQueryResult 中,我的结果是例如一张表,其中有一列包含 double 。现在我想将这些 double 复制到 std::vector 中。我现在的做法是使用 [][] 运算符访问每个 double 值,然后在 for 循环中将其复制到我的 vector 中。
这行得通,但非常耗时,因为我正在循环复制 277000 double。有没有办法将列复制到我的 vector 中?问题是我的其他函数在它们的参数列表中使用 std::vectors。或者我可以更改我的函数以调用 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
提前致谢。
马丁
最佳答案
最终,如果您需要复制,那么您就需要复制,您是自己编写循环还是获取库函数来执行它并不是特别相关。
您可以做的是在目标 vector 中预先保留
足够的空间以避免重复重新分配和复制:
vec.reserve(sqr.num_rows());
关于C++ mysqlpp::storequeryresult 和 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430766/
我想知道是否有更快的方法将我的数据从 mysqlpp::storequeryresult 复制到 std::vector。 我的例子如下:我用 query.store() 将我的查询结果存储在 Sto
我是一名优秀的程序员,十分优秀!