Closed. This question does not meet Stack Overflow guidelines 。它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 Stack Overflow 的 on-topic。
7年前关闭。
Improve this question
我有一组不同类型的容器,每个容器都与一个字符串 id 相关联。如果关联的容器不为空,则以下函数应打印 id。
如果我想将 std::vector 的大小传递给函数,我应该将它作为 size_type 对象传递吗?像这样:
如果是这样,size_type 在什么命名空间中?我如何在我的代码中包含它的定义?
也许这是一个解决方案:
没有多大意义。
如果您真的对不同容器的状态感兴趣,请将其作为参数传递。
如果要处理不同类型的容器,请使用模板。
甚至更一般
想改善这个问题吗?更新问题,使其成为 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/