当你有接受容器作为输出参数的方法时,它的职责是清除列表吗? (如果有的话) 例如,
bool GetResults(int nID, list<string>& results)
{
.....
}
在这种情况下,GetResults方法应该清除列表吗?或者它应该假设呼叫者知道他在做什么? 如果GetResults清除输出列表,那么它可以否定调用者在多个调用中收集结果的努力, 例如,
list<string> results.
GetResults(1,results)
GetResults(17,results)
答案 0 :(得分:2)
我的建议是编写这样的方法,以便它们采用输出迭代器:
template <typename OutputIterator>
OutputIterator GetResults(int nID, OutputIterator out)
这推动了将结果清除回调用者的决定。
它决定了使用哪个容器将结果保存回调用者 - 在界面中不再需要硬编码std::list
。
答案 1 :(得分:1)
答案实际上取决于你喜欢什么,然后说出界面规范中发生的事情并坚持下去。
只要你不混合并且保持一致,我认为清空清单并不重要。