我有一个函数,当前接受2个 vector ,这些 vector 可以包含任何简单的旧数据...
template <class T>
void addData(const vector<T>& yData, vector<T> xData)
{ .. }
问题:
std::array
或两个std::vector
或什至二者的组合? 最佳答案
为什么不仅仅使用它,它可以与使用随机访问迭代器的任何容器一起使用,包括普通的旧数组。如果可以使用迭代代替索引,那么也可以消除随机访问的要求。
template <typename Cnt1, typename Cnt2>
void addData(const Cnt1& yData, Cnt2 xData) // is pass-by-value intended?
{
using std::begin;
using std::end;
typedef decltype(*begin(yData)) T;
const auto sizeY = end(yData) - begin(yData);
const auto sizeX = end(xData) - begin(xData);
// ...
}
C++ 03版本(不支持普通的旧数组):
template <typename Cnt1, typename Cnt2>
void addData(const Cnt1& yData, Cnt2 xData) // is pass-by-value intended?
{
typedef Cnt1::value_type T;
const size_t sizeY = yData.end() - yData.begin();
const size_t sizeX = xData.end() - xData.begin();
// ...
}