0

当您有接受容器作为输出参数的方法时,谁负责清除列表?(如果有的话)例如,

bool GetResults(int nID, list<string>& results)
{
    .....
}

在这种情况下,GetResults 方法是否应该清除列表?还是应该假设调用者知道他在做什么?如果 GetResults 清除了输出列表,那么它可能会否定调用者在多个调用中收集结果的努力,例如,

list<string> results.

GetResults(1,results)

GetResults(17,results)
4

2 回答 2

2

我的建议是编写这样的方法,以便它们采用输出迭代器:

template <typename OutputIterator>
OutputIterator GetResults(int nID, OutputIterator out)

这会将清除结果的决定推回给调用者。

它还将决定使用哪个容器将结果保存回调用者 -std::list界面中不再有硬编码。

于 2012-12-21T15:32:07.343 回答
1

答案实际上是取决于您喜欢什么,然后说出接口规范中发生的事情并坚持下去。

只要你不混合并且保持一致,我认为谁清空列表并不重要。

于 2012-12-21T13:05:40.563 回答