정적배열에선 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;
}



+ Recent posts