将 int 数组转换为 std::vector<int*>

gri*_*rom 0 c++ std

我正在尝试将整数 C 样式数组“转换”为std::vector<int*>不使用for循环,或者更确切地说是在向量中插入所有数组项的指针。

我目前正在通过执行以下操作来实现这一点:

for (size_t i = 0; i < 5; i++)
{
    vector.push_back(&values[i]);
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过使用std::vector::insert()and来实现std::being/end

Fra*_*eux 5

std::transform是一种有用的算法,<algorithm>用于在不隐式兼容但您可以为其提供转换函数的容器之间复制值。

这是一个如何std::vector<int*>从 a填充 a 的示例std::array<int, N>

int values[5] = { 1,2,3,4,5 };
std::vector<int*> v1;

std::transform(
    std::begin(values), std::end(values),   // Copy from
    std::back_inserter(v1),                 // Copy to
    [](auto& i) {                           // Transformation function
        return &i;
    });
Run Code Online (Sandbox Code Playgroud)

编辑:更改std::array<int, 5>int[5]考虑问题中的编辑。