벡터의 모든 인자 값 더하기
#include <numeric>
int sum = std::accumulate(v.begin(), v.end(), 0);
// 첫번째 두번재 인자는 어디부터 어디까지
// 3번째 인자는 sum값의 초기값
// 만약 sum이 double이면 0.0으로 적어주면 됨
뒤집기
#include <algorithm>
reverse(vec.begin(), vec.end());
// 1,2,3,4,5가 들어있던 vec를 reverse하면 5,4,3,2,1이 된다
문자열 뒤집기도 가능
reverse(str.begin(), str.end()); 하면 문자열도 잘 뒤집혀짐
swap
#include <algorithm>
swap(값, 값);
혹은
swap(객체, 객체);
벡터와 벡터의 값을 바꾸는것도 가능하고 벡터 내의 값과 값을 바꾸는것도 가능
cout << string(i, '*') << endl;
'*' 문자를 i번 출력한다
rotate
벡터의 값들을 한칸씩 옮기면서 회전시킴
#include <algorithm>
rotate(v.begin(), v.begin() + 1, v.end()); // 한칸씩 왼쪽 이동
rotate(v.begin(), v.end() - 1 , v.end()); // 한칸씩 오른쪽 이동
// (시작반복자, 첫위치로 올 반복자, 종료반복자)
인덱스 1번이 첫위치로 간다는건 왼쪽으로 이동인 셈이고
인덱스 마지막이 첫위치로 간다는건 오른쪽으로 이동인 셈이니까
람다
sort(numlist.begin(), numlist.end(),
[n](const auto& a, const auto& b) -> bool
{ if(abs(a-n) == abs(b-n))
return a > b;
else
return abs(a-n) < abs(b-n); }
);
위처럼 사용할때 return a>b처럼 앞이 크게 리턴하면 큰게 앞으로 가는 내림차순 정렬이 되는 듯 하고
return abs(a-n) < abs(b-n);처럼 뒤가 크게 하면 절대값이 더 큰게 뒤로가는 오름차순 정렬이 되는 듯 함
2022/11/14 공부한 것, 부족한 것(정리완료)
2022. 11. 15. 01:18