영넌 개발로그

[C++ 기초] STL : Standard template library / class array 본문

코딩/C++

[C++ 기초] STL : Standard template library / class array

영넌 2020. 10. 27. 03:36

STL ?

C++ 사용자를 위한 라이브러리

컨테이너(vector, stack), 반복자 (iterator), 알고리즘(sort), functor

 

class array

(벡터랑 다른 것)

- class vector:

    동적으로 크기 조절 가능하지만 속도가 느리다

 

array

  - 크기가 결정, 속도가 빠르다

  - 배열과 동일하지만, 여러가지 함수를 제공하여 편의성을 높인 것이다

  - local일 때와 global일 때 초기화가 다르다 (global은 전부 0 초기화)

  - #include <array> 사용

 

array 정의

  - array<type, size>

    std::array<int, 3> a;

 

array 함수

array.front( ) 첫 번째 요소 값
array.back( ) 마지막 요소 값
int main() {
	array<int, 3> _myarray = { 7,8,9 };
	//array<int, 3> _myarray { 7,8,9 }; 같은 코드

	cout << "front: "<<_myarray.front() << "  back:" <<_myarray.back() << endl;

	return 0;
}

 

array 값을 순차적으로 출력하는 방법

    1.  [ index ] : size() 를 이용하여 index를 결정한다

    2.  at( index )

    3.  for : auto

    4.  iterator : begin(), end()              : 주소를 넘겨주는 함수

    5.  reverse_iterator : rbegin(), rend()

#include <iostream>
#include <array>

using namespace std;

int main() {
	array<int, 3> _myarray = { 7,8,9 };
	
	cout << "Traditional for: ";
	for (int i = 0; i < _myarray.size(); i++) {
		cout << " " << _myarray[i];
	}
	cout << endl << endl;

	cout << "at() for: ";
	for (int i = 0; i < _myarray.size(); i++) {
		cout << " " << _myarray.at(i);
	}
	cout << endl << endl;

	cout << "Range-based for: ";
	for (auto& e : _myarray) {
		cout << " " << e;
	}
	cout << endl << endl;

	cout << "Iterator for: ";
	for (auto e = _myarray.begin(); e!= _myarray.end(); e++) {
		cout << " " << *e;
	}
	cout << endl << endl;

	cout << "Reverser Iterator for: ";
	for (auto e = _myarray.rbegin(); e != _myarray.rend(); e++) {
		cout << " " << *e;
	}
	cout << endl << endl;


	return 0;
}

 

fill(value) value로 모두 채우기
array_1.swap(array_2) array_1과 array2를 바꿈 (type과 size가 같아야 함)
#include <iostream>
#include <array>

using namespace std;

void print(array<int,3> a) {
	for (auto& e : a) {
		cout << " " << e;
	}
	cout << endl << endl;
}

int main() {
	array<int, 3> _myarray = { 7,8,9 };
	_myarray.fill(100);

	print(_myarray);

	array<int, 3> _yourarray = { 1,2,3 };
	_myarray.swap(_yourarray);

	print(_myarray);
	return 0;
}

Comments