Shi*_*bli 8 c++ vector stdvector c++11 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;
}
Ale*_*ler 16
鉴于你传入一个array,foo似乎没有调整它传入的容器的大小(但是,它确实似乎修改了元素,因为vec传递非const).因此,除了如何访问元素之外,它不需要知道任何有关底层容器的信息.
然后,您可以传递一对迭代器(并使迭代器类型成为模板参数),就像许多STL算法一样.
| 归档时间: | 
 | 
| 查看次数: | 3934 次 | 
| 最近记录: |