我想编写一个可以从其调用站点接受任何类型的连续缓冲区(例如,原始数组等)std::array
的函数std::vector
。我想出了两种方法。
方法#1:
void func( int* const buffer, const std::size_t expectedTokenCount );
这里,expectedTokenCount
是将插入到buffer
.
方法#2:
void func( const std::span<int> buffer, const std::size_t expectedTokenCount );
在这种方法中,我认为我最好以一种首先检查通buffer
孔大小buffer.size( )
并与之比较expectedTokenCount
以确保其容量大于或等于的方式编写函数,expectedTokenCount
否则会引发某种异常。这是比第一种方法更有效且更安全的方法吗?哪一个更好?如果将向量传递给它,它的行为span
及其成员函数会改变还是与数组相同?size