在 C++ 中将子向量作为函数参数传递

use*_*086 5 c++ vector

给定一个大小为 10 的向量 v1,我想将 v1 的第 1、3 和 7 个元素作为单个函数参数传递。与其创建另一个向量 v2,而是按值复制 v1 中的三个元素并传递 v2 的引用,还有没有更有效的方法来传递参数(即不创建 v2 并按值复制元素)?

eca*_*mur 3

根据所需的行为,您可以传递一个vector<reference_wrapper>或其他容器reference_wrapper

#include <vector>
#include <functional>

void f(std::vector<std::reference_wrapper<double>>) {}
void g() {
  std::vector<double> v(10);
  f({v[0], v[2], v[6]});
}
Run Code Online (Sandbox Code Playgroud)

  • 在这里使用“std::reference_wrapper”而不是指针有优势吗? (2认同)