在下面的代码中,函数(foo)参数(std::vector
)的大小可以是使函数成为通用函数的任何东西。但是,有时大小容器已知,因此可以使用std :: array。问题是将std::array
转换为std::vector
。解决这个问题的最好方法是什么?总是在这种情况下使用std::vector
是否更好?将std :: array转换为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;
}
我假设'foo'修改了矢量,因为它是通过可变参考引用的,这是否正确?这将与答案非常相关。 –
现在你必须要解决它,但是将来我们会写'void foo(RangeOf&);'并且它会采用任何一种'int'范围。 –
这个问题是为什么标准库总是需要'begin'和'end'迭代器。这样它并不关心你使用哪个容器。 –