Doxygen是否有类似clobber的参数规范?

时间:2018-02-16 19:39:35

标签: c++ doxygen

考虑以下函数从线性运行时间中删除数组中的重复项

//! Removes duplicated integers
void remove_duplicate(
  vector<unsigned>&arr, //!< [in,out] Remove duplicates from this array
  vector<bool>&seen     //!< [???] All elements must be false and have at least as many elements as one plus the maximum number in \p max_int. After the function call finishes all elements are false.
)noexcept{
  {
    auto in=arr.begin(), out=arr.begin(), end = arr.end();
    while(in != end){
      if(!seen[*in]){
        *out = *in;
        ++out;
        seen[*in] = true;
      }
      ++in;
    }
    arr.erase(out, end);
  }
  {
    for(auto i=arr.begin(), end = arr.end(); i!=end; ++i)
      seen[*i] = false;
  }
}

出于效率和异常安全原因,存在seen参数。可以将其作为函数内的自动变量,而不是将其作为参数传递。但是,这种内存分配可能会抛出。此外,如果经常在类似的数组上调用removed_duplicate,例如来自已知范围的ID数组,那么为每个工作线程分配seen向量,然后不断重复使用它是个好主意。 。

我可以用Doxygen将参数标记为“in”,“out”或“in,out”。 arr显然是一个“in,out”参数。 seen参数既不适合这两个类别。我该放什么?

0 个答案:

没有答案