array는 항상 숫자가 들어가야 합니다. 몇개를 지정할걸지 해줘야 하는 것입니다.
array<int, 5> my_arr = { 1, 2, 3, 4, 5 };
my_arr = { 0, 1, 2, 3, 4 };
my_arr = { 0, 1, 2 };
갯수가 부족한 것은 상관이 없습니다.
cout << my_arr[0] << endl;
cout << my_arr.at(0) << endl;
이렇게 array는 []를 사용하지만 at 함수 사용하면 ()로 사용합니다. 첫번째는 넘는지 안넘는지 상관없이 access를 합니다. 하지만 at은 미리 해본 다음 문제가 있으면 예외처리를 발생시킵니다.
중간에 한번씩 검사를 하니깐 속도차이는 2번째가 조금 더 느립니다. 퍼포먼스가 아주 중요한 프로그램을 만들 때는 첫번째를 씁니다.
void printLength(array<int, 5> my_arr)
{
cout << my_arr.size() << endl;
}
int main()
{
array<int, 5> my_arr = { 1, 2, 3, 4, 5 };
my_arr = { 0, 1, 2, 3, 4 };
my_arr = { 0, 1, 2 };
printLength(my_arr);
return 0;
}
이런 식으로도 가능합니다. 하지만 array가 많이 클 경우에 함수로 복하는데 시간이 많이 걸리기 때문에 포인터로 변환합니다. 그렇기 때문에 const array<int, 5>& my_arr를 매개변수로 넣어주어서 사용하시면 됩니다.
int main()
{
array<int, 5> my_arr = { 1, 21, 3 , 40, 5 };
for (auto &element : my_arr)
cout << element << " ";
cout << endl;
sort(my_arr.begin(), my_arr.end());
for (auto& element : my_arr)
cout << element << " ";
cout << endl;
return 0;
}
이렇게 해주면 처음에는 1, 21, 3, 40, 5 가 나오게 되지만 이후 sort함수를 사용하면 이후 정렬되서 나오는 것을 볼 수 있습니다. 역순으로 정렬하려면 begin앞에 rbegin 이런식으로 붙여주면 됩니다. end에도 rend 이런식으로 바꿔주면 역순 정렬이 됩니다.
Vector 소개
#include<iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> array;
vector<int> array2 = { 1, 2, 3, 4, 5 };
cout << array2.size() << endl;
vector<int> array3 = { 1, 2, 3, };
cout << array3.size() << endl;
vector<int> array4 = { 1, 2, 3, };
cout << array4.size() << endl;
return 0;
}
이렇게 사이즈를 필요할 때마다 바꿔도 상관이 없습니다. 전에 array 배열의 경우 사이즈가 고정되어 있기 때문에 큰 값을 넣어주지 않는 이상 이런 식으로 코딩하기가 조금 어려움이 있었는데 vector는 동적 배열이기 때문에 그런 걱정이 없습니다.
int main()
{
vector<int> arr = { 1, 2 ,3, 4, 5 };
for (auto& itr : arr)
cout << itr << " ";
cout << endl;
return 0;
}
이런식으로 for-each를 사용해서 반복을 해줍니다. 이런 식으로 하면 편하게 arr 배열을 출력할 수 있습니다. 물론 iterator도 가능하지만 이 경우 for-each보다 많이 복잡합니다.
cout << arr[1] << endl;
cout << arr.at(1) << endl;
이런식으로 배열 중 하나를 끄집어내줄 수 있습니다. new int를 쓰면 부담감이 있었는데 dele를 하는.. 하지만 vector는 그런 부담감이 없습니다. 그리고 자기의 길이를 알아서 기억을 해줍니다. 함수의 parameter로 보내면 자신의 길이를 알고 있습니다.
할다을 할 때는 5, 6, 변수명 이런 식으로 초기화를 할 수 있는데 arr.size() 함수를 이용하면 원소의 개수가 몇개인지까지 size를 알 수 있기 때문에 길이를 알기 쉽습니다.
'IT 프로그래밍 > C++' 카테고리의 다른 글
[따배시 7.1 ~ 2 ] 매개변수와 실인자의 구분, 값에 의한 전달 (0) | 2024.04.02 |
---|---|
참조에 의한 호출 c++ (0) | 2024.04.01 |
[따배시 6 .19] 다중 포인터와 동적 다차원 배열 (0) | 2024.03.30 |
[따배시 6.17~18] for-each 반복, void 포인터 (0) | 2024.03.30 |
[따배시 6.15 ~ 6.16] 참조, 포인터와 참조의 멤버 선택 연산자 (0) | 2024.03.30 |