std::array와 std::vector 차이

2019. 10. 30. 10:06PL/C++

가장 큰 차이는 고정된 크기와 유동적인 크기에 있다. std::vector는 멤버함수로 resize를 가지고 있지만, std::array는 가지고 있지 않다. 즉 선언할 때 std::array는 반드시 크기를 명시해야지만 std::vector는 push_back 멤버함수로도 사이즈를 동적으로 늘릴 수 있다는 특징이 있다

 

단 std::array를 쓰는 이유는 기본 C에서 배열을 명시하는 것보다는 size, swap 등 다양한 함수와 연산자가 가능하기에 사용하는 것이다

 

#include <array>
#include <iostream>

using namespace std;

int main(void) {
	array<int, 5> arr = { 1, 2, 3, 4, 5 };
	for (int& u : arr) {
		cout << u << ' ';
	}
	cout << '\n';

	arr = { 10, 20, 30, };
	for (int& u : arr) {
		cout << u << ' ';
	}
	cout << '\n';

	cout << arr.at(3) << '\n';
	cout << arr.front() << '\n';
	cout << arr.back() << '\n';

	array<int, 5> tarr = { 6, 7, 8, 9, 10 };
	arr.swap(tarr);

	for (int& u : arr) {
		cout << u << ' ';
	}
	cout << '\n';

	return 0;
}

 

#include <vector>
#include <iostream>

using namespace std;

int main(void) {
	vector<int> vect(5);
	for (int i = 0; i < 5; i++) {
		vect[i] = i + 1;
	}

	for (auto& u : vect) {
		cout << u << ' ';
	}
	cout << '\n';

	vect.resize(10);
	for (int i = 0; i < 10; i++) {
		vect[i] = i + 1;
	}

	for (auto& u : vect) {
		cout << u << ' ';
	}
	cout << '\n';

	return 0;
}

'PL > C++' 카테고리의 다른 글

malloc/free와 new/delete 차이  (0) 2019.11.12
cin으로 방어적 프로그래밍  (0) 2019.10.31
디버깅으로 쓰이는 assert  (0) 2019.10.30
char *과 const char *  (0) 2019.10.25
constexpr  (0) 2019.10.23