其实,无需复杂的模板参数,只是简单的
#include <string>
#include <vector>
class QueryStatistics
{
private:
std::vector < std::pair <std::string,int > > queries_title;
std::vector < std::pair <std::string,int > > queries_author;
std::vector < std::pair <std::string,int > > queries_phrase;
std::vector < std::pair <int,int > > queries_id;
public:
template<typename T, typename U>
void increase(T& query, U const& para)
{
for (unsigned int i=0; i < query.size(); i++)
{
if (query[i].first == para)
{
query[i].second += 1;
return;
}
}
}
void increase_freq_title (std::string & title)
{
increase(queries_title,title);
}
void increase_freq_author (std::string & author)
{
increase(queries_author,author);
}
void increase_freq_phrase (std::string & phrase)
{
increase(queries_phrase,phrase);
}
void increase_freq_id (int id_doc)
{
increase(queries_id,id_doc);
}
};
你为什么不建立一个功能,并添加参数,需要一个载体? – OGH
使用'template void increase_freq(std :: vector >&v,T const&k)',''''''就像'样本代码'在'queries_title'上执行操作。我会让它成为一个免费的功能。 –
Yakk