#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v(10);
int num = 1;
for(auto& it: v) {
it = num++;
}
// std::find
// auto iter = find(v.begin(), v.end(), 11);
// if(iter != v.end()) {
// cout << *iter;
// }
// std::find_if
// struct Functor{
// bool operator()(int tmp) {
// return !(tmp % 11);
// }
// };
// Functor func;
// auto iter = find_if(v.begin(), v.end(), [](int tmp){return !(tmp % 5);});
// if(iter != v.end()) {
// cout << *iter;
// }
// std::count_if
// struct Functor{
// bool operator()(int tmp) {
// return (tmp % 2);
// }
// };
// int count = std::count_if(v.begin(), v.end(), Functor());
// std::cout << count;
/* std::all_of, std::any_of, std::none_of이 있는데, 각각 모든 값이 조건에 만족하는가, 하나라도 만족하는게 있는가, 만족하는게
없는가를 반환함 */
// bool b = all_of(v.begin(), v.end(), [](int tmp){return tmp <= 10;}); // 모든 값이 10보다 작은가?
// std::cout << b << std::endl;
// b = any_of(v.begin(), v.end(), [](int tmp){return tmp <= 10;}); // 10보다 작은 값이 있는가?
// std::cout << b << std::endl;
// b = none_of(v.begin(), v.end(), [](int tmp){return tmp <= 10;}); // 10보다 작은 값이 없는가?
// std::cout << b << std::endl;
// std::for_each 모든 값에 어떤 연산을 적용
// for_each(v.begin(), v.end(), [](int& tmp) {tmp *= 5;});
// for(auto& it: v)
// std::cout << it << std::endl;
// std::remove, std::remove_if는 지우고 싶은 값들을 지운다기 보다는 지우고 싶지 않은 값들을 앞에 저장한다.
// 즉 [1,2,3,4,5] 에서 짝수만 지운다는 가정이면 [1,3,5,4,5] 처럼 홀수를 앞에 저장하고, 뒤에 값은 남겨둔다. 그리고
// 그 iterator를 반환한다.
// vector<int>::iterator iter = remove_if(v.begin(), v.end(), [](int tmp) {return (tmp % 2);}); // 홀수면 제거하고 싶을 때
v.erase(remove_if(v.begin(), v.end(), [](int tmp) {return (tmp % 2);}), v.end());
for(auto& it: v)
std::cout << it << std::endl;
return 0;
}
remove와 remove_if를 조심해서 사용하자!
iterator로 순회하는 for문 내부에서 vector의 erase나 clear을 사용하면 예상치 못한 작업을 수행할 수 있음.
for(auto& it = v.begin(); it != v.end();) {
if(odd) {
it = v.erase(it); // it을 erase할 시 it이 새로운 iter을 가리키도록 해야함. 아니면 예상치 못한 동작이 작동될 수 있음.
}
else {
it++;
}
}
'c++' 카테고리의 다른 글
공부 (0) | 2025.05.06 |
---|---|
오늘 구현중 에러사항 (1) | 2025.04.21 |
c++공부(list iterator 구현) (0) | 2025.03.07 |
c++ 공부(vector iterator 구현) (0) | 2025.03.06 |
c++ 공부 (1) | 2025.03.03 |