题面
程序
typedef pair<string,int> PST;
class AuthenticationManager {
public:
int TIMETOLIVE;
vector<PST> IDENTIFYING_CODE;
AuthenticationManager(int timeToLive) {
TIMETOLIVE=timeToLive;
}
void generate(string tokenId, int currentTime) {
IDENTIFYING_CODE.push_back({tokenId,currentTime});
}
void renew(string tokenId, int currentTime) {
for(auto &i: IDENTIFYING_CODE){
if(i.second+TIMETOLIVE<=currentTime) continue;
if(i.first==tokenId){
cout<<"修改过"<<endl;
i.second=currentTime;
}
}
// for(vector<PST>::iterator i=IDENTIFYING_CODE.begin();i!=IDENTIFYING_CODE.end();i++){
// if((*i).second+TIMETOLIVE<=currentTime) continue;
// if((*i).first==tokenId){
// (*i).second=currentTime;
// }
// }
// for(auto i: IDENTIFYING_CODE){
// cout<<i.first<<" "<<i.second<<endl;
// }
}
int countUnexpiredTokens(int currentTime) {
int cnt=0;
for(auto i:IDENTIFYING_CODE){
if(i.second+TIMETOLIVE>currentTime){
cnt++;
// cout<<cnt<<" "<<i.first<<" "<<i.second<<endl;
}
}
cout<<endl;
return cnt;
}
};
/**
* Your AuthenticationManager object will be instantiated and called as such:
* AuthenticationManager* obj = new AuthenticationManager(timeToLive);
* obj->generate(tokenId,currentTime);
* obj->renew(tokenId,currentTime);
* int param_3 = obj->countUnexpiredTokens(currentTime);
*/
note
auto &i: IDENTIFYING_CODE;
用引用可以加快访问速度,同时保证使修改有效;
auto :遍历的为值,不是迭代器