공부한거/C++
#include <array>
tl;dr
2024. 11. 21. 19:48
array를 쓰게 해주는 STL같다.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::array<int, 5> zeroArr{};
std::cout << "What: " << arr[1] << std::endl;
std::cout << "What: " << zeroArr[1] << std::endl;
}
결과값은 2, 0이 나온다.
위는 명시적으로 초기화를, 아래는 그냥 0으로 초기화했다.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << "Size: " << arr.size() << std::endl;
}
Size: 5가 출력된다. sizeof()을 굳이 안해도 잘 출력되는 모습을 볼 수 있다.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << arr[2] << std::endl;
std::cout << arr.at(2) << std::endl;
//std::cout << arr[5] << std::endl;
//std::cout << arr.at(5) << std::endl;
}
operator[] : 빠른 접근, 범위 초과검사 없음.
at(): 안전한 접근, 범위 초과 시 예외(std::out_of_range) 발생.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
for (auto it = arr.rbegin(); it != arr.rend(); ++it) {
std::cout << *it << " "; // 출력: 1 2 3 4 5
}
}
- begin() / end(): 처음과 끝 반복자.
- cbegin() / cend(): 읽기 전용 반복자(const).
- rbegin() / rend(): 역방향 반복자.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr1 = {1, 2, 3, 4, 5};
std::array<int, 5> arr2 = {10, 20, 30, 40, 50};
// fill
arr1.fill(0); // arr1: {0, 0, 0, 0, 0}
// swap
arr1.swap(arr2); // arr1: {10, 20, 30, 40, 50}, arr2: {0, 0, 0, 0, 0}
std::cout << arr1.at(3)<< std::endl;
std::cout << arr2.at(3)<< std::endl;
}
배열 조작
- fill(): 모든 요소를 특정 값으로 설정.
- swap(): 두 배열의 내용을 교환.
#include <iostream>
#include <array>
int main() {
std::array<int, 5> arr = {1, 2, 3, 4, 5};
std::cout << "First: " << arr.front() << std::endl; // 출력: First: 1
std::cout << "Last: " << arr.back() << std::endl; // 출력: Last: 5
int* ptr = arr.data(); // C 스타일 배열처럼 사용
std::cout << "First element: " << ptr[0] << std::endl; // 출력: First element: 1
}
6. 기타 메서드
- front(): 첫 번째 요소 반환.
- back(): 마지막 요소 반환.
- data(): 내부 C 스타일 배열 포인터 반환.