gpt4 book ai didi

C++ mysqlpp::storequeryresult 和 std::vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:14 26 4
gpt4 key购买 nike

我想知道是否有更快的方法将我的数据从 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com