1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<array>
#include<iostream>
using namespace std;
#define Max_Size 10
 
void print(array<int, Max_Size> Target_Array)
{
    for (auto i : Target_Array)
        cout << i << " ";
    cout << endl;
}
void main()
{
    array<int, Max_Size > Array = { 1,3,5,7,9,11,13,15,17,19 };
    print(Array);
    cout << *(--Array.end()) << endl;        // end() : 가장 끝(범위밖)iter반환하기에 --해서 출력
    cout << *(--Array.cend()) << endl;        // cend() : const형태로 end() iter반환한거
    cout << *(--Array.rend()) << endl;        // end() : 가장 끝(범위밖)iter반환하기에 --해서 출력
    cout << *(--Array.crend()) << endl;        // cend() : const형태로 end() iter반환한거
}
 
cs

뭐좀 확인한다고 해보고있는데
end()의경우 컨테이너의 가장마지막(데이터범위밖 뒤쪽) 을 가르키는거잖아?
그러니까 19를 출력하려면 -- 해서 그앞쪽값을 가르키게해서 출력한것이고

rend()의경우는 거꾸로 end()의 위치니까 1의 앞쪽을 가르키고있는것 아님?
그래서 출력하려면 ++Array.rend() 해야지 출력할수 있을 줄 알았는데

--Array.rend()해야 1을 출력하고
Array.rend(), ++Array.rend() 따위는 다 에러를뱉는데
왜??