已修复更新
我只想返回数组中唯一条目的数量。该数组包含一个表示 IP 地址的字符串变量。如果有 10 个,但有 3 种不同的类型,我只想返回 3 个。我已经研究了一整天,似乎找不到有效的解决方案。我的代码:
原始代码
int getUnique(Visitors info[], string url, string startDate, string endDate){
int count = 0;
string temp;
for(int i = 0 ; i < N ; i++){
if(url == info[i].URL && (dateChecker(startDate, endDate, info[i].dateAccessed))){
}
}
return count;
}
更新代码
int getUnique(Visitors info[], string url, string startDate, string endDate){
set<string> ips;
for(int i = 0 ; i < N ; i++){
if(url == info[i].URL && (dateChecker(startDate, endDate, info[i].dateAccessed))){
ips.insert(info[i].IP);
}
}
return ips.size();
}
第一个 if 检查匹配的 URL 是否确实匹配,而 dateChecker
只是确保特定 IP 访问该 URL 的日期位于 2 个传递的日期之间 ( >开始日期
和结束日期
)。在这种情况下如何获得不同IP的数量?
最佳答案
使用std::set
,它以独特的方式存储项目并且高效:
std::set<string> ips;
for (int i=0; i<N; i++)
ips.insert(info[i].IP);
int unique_ips = ips.size();
关于c++ - 数组中不同数量的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043703/