在下面的代码中,函数(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;
}
foo
修改了向量,因为它采用可变引用,这是正确的吗?这对答案非常重要。 - Mooing Duckvoid foo(RangeOf<int>&);
的东西,它将接受任何类型的int
范围。 - Joseph Mansfieldbegin
和end
迭代器。这样它就不关心你使用哪种容器了。 - Mark Ransomstd::vector
呢? - David Rodríguez - dribeas