2017. 1. 4. 23:13ㆍIT-개발/C및C++
for_each는 순차적으로 컨테이너들에 담긴 데이터를 함수의 파라미터로 넘겨서 함수를 실행시키는 알고리즘이다
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
struct User
{
int UID;
int PlayTime;
};
struct UpdatePlayTime
{
void operator() ( User& user )
{
user.PlayTime += PlayTime;
}
int PlayTime;
};
int main()
{
vector< User > Users;
User user1; user1.UID = 1; user1.PlayTime = 40000;
User user2; user2.UID = 2; user2.PlayTime = 0;
User user3; user3.UID = 3; user3.PlayTime = 25000;
Users.push_back( user1 );
Users.push_back( user2 );
Users.push_back( user3 );
// 현재 플레이 시간
vector< User >::iterator IterUser;
for( IterUser = Users.begin(); IterUser != Users.end(); ++IterUser )
{
cout << "UID : " << cout << IterUser->UID << "의 총 플레이 시간: " <<
IterUser->PlayTime << endl;
}
cout << endl;
UpdatePlayTime updatePlayTime;
updatePlayTime.PlayTime = 200;
// 두 번째 유저부터 갱신
for_each( Users.begin() + 1, Users.end(), updatePlayTime );
for( IterUser = Users.begin(); IterUser != Users.end(); ++IterUser )
{
cout << "UID : " << cout << IterUser->UID << "의 총 플레이 시간: " <<
IterUser->PlayTime << endl;
}
return 0;
}
변경 불가 시퀀스 알고리즘에는 위에 설명한 find, find_if, for_each 이외에
count, search, equal, adjacent_find, equal 등이 있다.
'IT-개발 > C및C++' 카테고리의 다른 글
format 숫자 출력하기 (0) | 2017.05.11 |
---|---|
STL - algorithm - generate (0) | 2017.01.04 |
STL - algorithm - find (0) | 2017.01.04 |
STL - algorithm (0) | 2017.01.04 |
STL - Set - sample(2) (0) | 2017.01.04 |