对于长字符串,以下内容非常慢:
std::string s = "long string";
K klist = DBVec::CreateList(KG , s.length());
for (int i=0; i<s.length(); i++)
{
kG(klist)[i]=s.c_str()[i];
}
对于高达 100k 的字符串,它的工作速度可以接受(<100ms),但对于几百万个字符的字符串,它的速度会慢到爬行(几十分钟,可能是几小时)。我没有看到除此之外的任何东西kG
会产生非线性。我没有看到访问器函数kG
是非常量时间的任何理由,但是在这个循环中没有别的东西。kG
不幸的是,由于缺乏文档,我不知道如何工作。
问题:给定一个二进制数据块作为 std::string,构造字节列表的有效方法是什么?