如何在指定数据之间将数据从一个向量传递到另一个向量

问题描述 投票:0回答:1

我有矢量有数据喜欢

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));

我正在上面正确地获取数据,但是这样做是否有任何优化方式?

在上面的代码中,我必须每次都使用迭代器进行最后的参考,而不是寻找优化的解决方案

c++ vector
1个回答
0
投票

我没有对它进行测量,可以使事情变得相同(对于标准库实现者而言,实质上更多的努力),但我希望以下方法更有效:

std::vector<uint8_t> code(field.begin() + 1, it);

这种方法有助于分配足够的空间,然后从数组到数组进行std::copy()ing。使用std::back_inserter()最有可能最终插入单个元素(除非库编写者为这种情况实现了特殊版本的std::copy())。反过来,优化者也难以看清楚。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.