我有矢量有数据喜欢
1 2 3 4 5 = 1 1 1 1 1 1 = 2 2 2 2 2 2 2 2 = 7 7 7 7 7 7 7 7 ?
我希望从一个向量中获取从开始到第一个'='匹配的数据,并从第一个'='到下一个'='匹配到另一个向量,类似于最后一次出现
'='与'?'的最后一场比赛也成一个向量
我正在尝试使用字符串进行复制操作
std::vector<uint8_t>::iterator it;
it = find (field.begin(), field.end(), '=');
copy(field.begin() + 1, it, back_inserter(code));
std::vector<uint8_t>::iterator it2;
it2 = find (it, field.end(), '=');
copy(field.begin(), it2, back_inserter(system_code));
我正在上面正确地获取数据,但是这样做是否有任何优化方式?
在上面的代码中,我必须每次都使用迭代器进行最后的参考,而不是寻找优化的解决方案
我没有对它进行测量,可以使事情变得相同(对于标准库实现者而言,实质上更多的努力),但我希望以下方法更有效:
std::vector<uint8_t> code(field.begin() + 1, it);
这种方法有助于分配足够的空间,然后从数组到数组进行std::copy()
ing。使用std::back_inserter()
最有可能最终插入单个元素(除非库编写者为这种情况实现了特殊版本的std::copy()
)。反过来,优化者也难以看清楚。