0
을 반복 코드 :리팩터링 나는이 클래스를 가지고
#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:
QueryStatistics();
virtual ~QueryStatistics();
void increase_freq_title (std::string & title);
void increase_freq_author (std::string & author);
void increase_freq_phrase (std::string & phrase);
void increase_freq_id (int id_doc);
};
그리고 코드 reapeats 자체가 4 번이 비트,하지만 다른 벡터마다.
void QueryStatistics::increase_freq_title (std::string & title)
{
for (unsigned int i=0; i < queries_title.size(); i++)
{
if (queries_title[i].first == title)
{
queries_title[i].second += 1;
return;
}
}
}
동일한 코드를 네 번 반복하지 않으려면 어떻게 리팩터링 할 수 있습니까?
왜 하나 개의 함수를 작성하지 않고 벡터를 취 매개 변수를 추가하지 마십시오? – OGH
'increase_freq (std :: vector> & v, T const & k) 템플릿''템플릿을 사용하면 샘플 코드와 같이'v'에서 동작하는 본문은'queries_title'에서 처리됩니다. 나는 그것을 자유로운 기능으로 만들 것이다. –
Yakk