我应该使用模板来检查字符串和向量的空性吗
Should I use template for checking emptiness for string and vector?
我必须检查类的成员是否为空。该类正在从json文件中读取一些值,如果一些成员为空,则意味着json格式不正确。到目前为止,我只能检查字符串的空性,我已经使用了一个函数:
void ConfigFile::checkEmptyness(const std::string& strIn, const std::string& memberNameIn, const std::string& pathIn)
{
if (strIn.empty())
{
throw ConfigFileException(emptyStringOrGetFailedMsg(pathIn, memberNameIn));
}
}
现在,我必须修改应用程序,以便从json中读取浮点向量。我发现了如何从json:中读取矢量
for (auto& item : tmpPT.get_child(path))
{
float label = item.second.get_value< float >();
checkNegativity< float >(label, "classifierSearchedClass", path);
m_classifierSearchedClass.push_back(label);
}
但我正在考虑验证它是否也是空的。我可以创建一个重载函数checkEmptyness
,它有一个向量参数。所以,我的问题是:
我应该创建一个模板,还是仅仅创建一个重载函数?
如果创建一个模板,可以这样做:
template< typename T>
void ConfigFile::checkEmptyness(const T& arrIn, const std::string& memberNameIn, const std::string& pathIn)
{
if (arrIn.empty())
{
throw ConfigFileException(emptyStringOrGetFailedMsg(pathIn, memberNameIn));
}
}
是一个好方法,还是使用重载更好?
这是一个很好的方法,因为它遵循DRY。
相关文章:
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 构造<int>具有 2 个字符串文字的向量
- 如何将元素添加到向量的字符串位置
- 将向量解析<string>为字符串
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 在 C++11 中,如何查找并返回以给定字符串开头的字符串向量中的所有项?
- 如何使用向量字符串令牌构建表达树
- 将 argv 复制到新的全局向量字符串
- 如何读取控制台输入并将其存储到向量字符串中
- 向量字符串push_back在C 中不起作用
- C char数组和向量字符串
- 可以直接初始化向量<字符串 *> 而不使用 new 吗?
- 迭代向量字符串的字符(C++禁止指针和整数之间的比较)
- 比较两个向量字符串的相似性C++
- 我有麻烦将字符串放入向量字符串
- 如何从一个向量字符串得到一个字符串的联合集
- 函数返回向量/字符串,但不返回数组
- 向量向量字符串固定大小
- c++向量字符串排序不工作
- C++将字符串数组[]复制到向量<字符串>