我正在尝试将整数 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?
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]考虑问题中的编辑。