c++ - 将 std::array 转换为 std::vector

标签 c++ c++11 vector stdvector stdarray

在下面的代码中,函数 (foo) 参数 (std::vector) 的大小可以是任何使函数成为通用函数的大小。但是,有时大小容器是已知的,因此可以使用 std::array。问题是将 std::array 转换为 std::vector。解决这个问题的最佳方法是什么?在这种情况下总是使用 std::vector 会更好吗?

#include <iostream>
#include <array>
#include <vector>

using namespace std;

// generic function: size of the container can be anything
void foo (vector<int>& vec)
{
    // do something
}

int main()
{
   array<int,3> arr; // size is known. why use std::vector?
   foo (arr); // cannot convert std::array to std::vector

   return 0;
}

最佳答案

鉴于您传入了一个arrayfoo 似乎没有调整它传入的容器的大小(但是,它似乎确实修改了元素,因为 vec 被传递为非常量)。因此,除了如何访问元素外,它不需要了解有关底层容器的任何信息。

然后,您可以像许多 STL 算法一样传递一对迭代器(并使迭代器类型成为模板参数)。

关于c++ - 将 std::array 转换为 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24894287/

相关文章:

c++ - 使用 Stencil-buffer 绘制 3D 模型的轮廓

c++ - 将派生类数组分配给基类指针

c++ - 用原始数据填充 std::vector

C++ 11 move 语义

c++ - 如何更新 map C++ 中元素的值

c++ - 这几行代码作为C++中的一个小测试框架有什么用呢?

vector - 如何获取和替换 Rust Vec 中的值?

c++ - 根据属性值删除结构 vector 中的元素

vector - Rust中的Vec <(i64,i64)>数据类型是什么?

c++ - 无法从 map 获取 key_type