정적배열에선 std::array를 사용가능하다.
기존 정적배열은 함수 파라미터로 배열을 보내면 사이즈를 측정할 수 없었다.
array를 사용하면 정적배열을 간단히 사용할 수 있다.
.size()를 사용하면 사이즈가 출력된다.
파라미터로 복사되어도 그대로 출력된다.
파라미터는 복사되기때문에 array가 크기가 크면 reference &를 사용하는게 좋다.
.at()을 사용하면 사이즈오버를 미리 체크해준다.
#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
void arrCheck(const array<int, 5> arr) {
cout << &arr << endl;
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
cout << arr.at(i) << endl;
}
}
void arrRefCheck(const array<int,5> &arr) {
cout << &arr << endl;
for (int i = 0; i < arr.size(); i++) {
cout << arr[i] << endl;
cout << arr.at(i) << endl;
}
}
int main()
{
//int array2[5] = {};
array<int, 5> arr = {1,10,3,7,5};
cout << "arrSize() : " << arr.size() << endl;
cout <<"main() : "<< &arr << endl;
arrCheck(arr);
arrRefCheck(arr);
//sort
std::sort(arr.begin(), arr.end());
arrCheck(arr);
arrRefCheck(arr);
//sort 역순
std::sort(arr.rbegin(), arr.rend());
arrCheck(arr);
arrRefCheck(arr);
return 0;
}
std::vector는 동적 array를 대체해서 손쉽게 사용가능하다.
std::vector는 동적할당이 되기때문에 처음부터 사이즈를 정해주지 않아도 된다.
std::array와 같이 .size(),.at()이 사용가능 하다.
동적할당이므로 .resize()로 크기를 변경할 수 있다.
동적할당은 delete를 해야하는데 vector은 자동으로 사라진다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<int> array;
std::vector<int> array2 = { 1,2,3,4,5 };
cout << array2.size() << endl;
vector<int> arr = { 1,2,3,4 };
for (auto &a : arr) {
cout << a << endl;
}
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ 참조에 의한 인수전달 Call By Reference (0) | 2019.07.30 |
---|---|
c++ 매개변수(parameter),인자(Argument),값에 의한 인수 전달 (CallbyValue) (0) | 2019.07.30 |
c++ 2중포인터,동적 2차원배열 (0) | 2019.07.29 |
c++ void pointer,generic pointer (0) | 2019.07.29 |
c++ for-each문 반복문 (0) | 2019.07.29 |