영넌 개발로그
[C++ 기초] STL : Standard template library / class array 본문
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;
}
'코딩 > C++' 카테고리의 다른 글
[SFML] 도형 그리기, 도형 움직이기 / 이벤트 처리 / 키보드 입력 (0) | 2020.12.03 |
---|---|
[SFML] Simple Fast Multimedia Library 설정 / 원 그리기 (0) | 2020.12.03 |
[C++ 기초] Vector (0) | 2020.10.27 |
[객체 기반 프로그래밍] getter, setter / object as 파라미터, 반환 값 (0) | 2020.10.27 |
Comments