如果我正在编写一个需要接收几个容器的库函数,哪个更好?
template <class Iterator1, class Iterator2>
void func_iterators(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
Run Code Online (Sandbox Code Playgroud)
要么
template <class Container1, class Container2>
void func_containers(const Container1 &c1, const Container2 &c2)
Run Code Online (Sandbox Code Playgroud)
如果你可以使用迭代器形式,那么就做.这允许调用者更灵活 - 例如,他们可以传递反向迭代器,或者一些在其他地方发送值,执行锁定或任何需要的特殊用途迭代器.如果您需要的不仅仅是迭代器访问 - 例如,调用.size()- 传递Container可能是更好的选择.