标签: c++ iterator arguments c++14 pass-by-reference
当传递标准集合(例如std::string或std::vector<std::string>)作为函数参数时,是通过引用还是通过迭代器更好地传递集合?
std::string
std::vector<std::string>
对集合的引用只是一个参数,而std::begin()和std::end()都需要两个参数,因为它不容易优雅地辨别集合的结尾只是std::begin()。
std::begin()
std::end()
但是,很多标准库选择迭代器而不是集合引用,所以我想知道答案是否不那么简单?
是否有一个好的,客观的理由选择一种形式而不是另一种形式?