C++ 重构采用 int 或字符串参数的方法
C++ Refactoring a method that takes either an int or string argument
我一直在努力创建一个程序来存储学生的集合。我意识到我本质上使用相同的复制/粘贴代码为我的各种类容器创建基本相同的方法。我决定重构代码并重新设计了大部分代码。我目前面临的问题是使用我的搜索方法。对于我的一些集合,搜索方法获取并返回一个整数 ID(例如学生编号),而其他集合获取并返回字符串 ID(例如课程代码)。我一直在试图弄清楚如何创建一个可以处理这两种情况的单一方法。
我基本上想要下面的代码,但我希望它获取并返回传递给它的类型(int 或字符串)。请注意,getID() 只是一个用于从学生班级返回学生 ID 或从课程类返回课程代码的方法。
template <typename S>
S * findID([string or int] ID){
for (typename vector<S*>::collectionsIter element = collection.begin() ; element != collection.end(); ++element)
if((*element)->getID() == ID) return *element;
return NULL;
}
您可以使用
模板,例如:
template <typename Collection, typename ID>
auto* find_by_id(Collection& collection, const ID& id)
{
auto it = std::find_if(std::begin(collection), std::end(collection),
[&](const auto* e) { return e->getID() == id; })
if (it == std::end(collection)) {
return nullptr;
}
return *it;
}
相关文章:
- c++ 构造函数 将 1 个字符串参数转换为 3 个属性
- 对函数的 out 字符串参数使用 swap 与赋值
- sscanf() 有两个字符串参数
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- 如何通过C++在Python函数中传递字符串参数
- 将字符串参数传递给 ifstream
- Pybind11:将字符串*参数传递给构造函数
- 为什么我不能提供一个字符串参数来打印 ncurses?
- 为什么将char*传递给字符串参数会产生汇编错误
- 字符串参数常量字符* 和常量 wchar_t*
- 无法将字符串参数传递到构造函数中?
- 为什么对字符串参数的常量引用可以采用字符串文字?
- C 中的模板专业化中的字符串参数
- 如何使用单声道嵌入将字符串参数传递给 c# 方法
- 如何检查谷歌模拟中作为空指针传递的字符串参数
- 向 const 字符串参数发送 0 int 文本时的访问冲突
- 构造函数字符串参数未设置窗口标题
- C++ 重构采用 int 或字符串参数的方法
- 调用具有字符串参数direct vs variable的函数
- 如何使用 2 个字符串参数从 jni java 库调用