Closed. This question does not meet Stack Overflow guidelines 。它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic

7年前关闭。



Improve this question




我有一组不同类型的容器,每个容器都与一个字符串 id 相关联。如果关联的容器不为空,则以下函数应打印 id。

如果我想将 std::vector 的大小传递给函数,我应该将它作为 size_type 对象传递吗?像这样:
void printIfNotEmpty(const std::string& id, size_type sizeOfContainer)
{
   if(sizeOfContainer)
   {
     output << id << " is not empty";
   }
   else
   {
     output << id << " is empty";
   }
}

如果是这样,size_type 在什么命名空间中?我如何在我的代码中包含它的定义?

也许这是一个解决方案:
template<class T>
void printIfNotEmpty(const std::string& id, const T& container)
{
  if(container.size())
  {
     output << id << " is not empty";
  }
  else
  {
     output << id << " is empty";
  }
}

最佳答案

这是一个奇怪的界面,因为

printIfNotEmpty("Baz", 37);

没有多大意义。

如果您真的对不同容器的状态感兴趣,请将其作为参数传递。
如果要处理不同类型的容器,请使用模板。
template<typename T>
void printIfNotEmpty(const std::string& name, const std::vector<T>& collection)
{
    if (!collection.empty())
    // ...
}

甚至更一般
template<typename Collection>
void printIfNotEmpty(const std::string& name, const Collection& collection)
{
    if (!collection.empty())
    // ...
}

关于c++ - 我应该在我的代码中使用 size_type,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18741651/

10-13 08:25
查看更多