小编use*_*390的帖子

参考矢量的部分片段?

我有一个黑盒子C++函数,我无法访问其源代码:

void blackbox(vector<int> &input);
Run Code Online (Sandbox Code Playgroud)

此函数以未知方式修改输入向量的元素.

我现在的问题是我想仅对矢量的部分片段应用黑盒函数,例如,矢量的最后500个元素.所以,这是我为实现这一目标而编写的例程:

vector<int> foo (5,1000);
vector<int> bar (foo.end()-500,foo.end());

blackbox(bar);

swap_ranges(foo.end()-500,foo.end(),bar.begin());
Run Code Online (Sandbox Code Playgroud)

这段代码可能有用,但是有更好的方法吗?

如果我只能为现有矢量的一段定义矢量参考,而不是创建一个副本,那将是一件好事.我对上述代码中的复制和交换部分不太满意; 因为这个例程被频繁调用,我认为重复的复制和交换会减慢代码的速度.如果我知道块框完成的确切操作,我会重写函数,以便它将矢量迭代器作为输入参数.不幸的是,目前这是不可能的.

c++ iterator reference vector

8
推荐指数
1
解决办法
709
查看次数

标签 统计

c++ ×1

iterator ×1

reference ×1

vector ×1