STL Array의 각종 사용 방법
앞서 배열에 대한 간단한 정리를 한 바 있다.
https://doompa.tistory.com/283
이번 글에서는 STL 배열에 대한 각종 사용 법을 정리하고자한다.
C++ 2차원 배열 초기화와 출력
2차원 배열의 초기화와 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <array>
#include <iostream>
using namespace std;
int main(){
array<array<int, 4>, 4> a1;
for(auto &row:a1){//row에는 a1의 행 요소가 담긴다.
for(auto &element:row){ //각 행 요소의 값들이 차례로 element에 담긴다.
element = 13;
}
}
for(auto &row:a1){
cout<<endl;
for(auto &element:row){
cout<<element;
}
}
return 0;
}
|
cs |
6 : 2차원 배열 선언
7 : 범위 기반 for문을 이용해 2차원 배열에 값 넣기(Reference 사용)
13 : 범위 기반 for문을 이용해 2차원 배열의 모든 요소 출력
.
2차원 배열 선언 및 초기화, 출력
1
2
3
4
5
6
7
8
9
10
11
|
int main(){
array<array<int, 3>, 3> a1 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
//==array<array<int, 3>, 3> a1 {{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }} //제일 바깥 brace는 클래스라는 표시 for(auto &row:a1){
cout<<endl;
for(auto &element:row){
cout<<element<<" ";
}
}
return 0;
}
|
cs |
1 : 2차원 배열 초기화, 2번줄 주석처럼 2차원 배열을 선언 및 초기화도 가능
4 : 범위 기반 for문으로 출력
for_each 사용
for_each(first, last, fn)
InputIterator first: 배열이나 어떤 container 자료형의 시작부 혹은 포인터
InputIterator last: 배열이나 어떤 container 자료형의 끝부 혹은 포인터
Function fn: 배열이나 container의 각 원소에 수행할, 인자가 1개인 함수. 함수 객체와 함수 포인터 모두 가능하다. 이 함수의 반환값은 무시된다.
범위 내의 각 원소들에 대해 각각 fn을 실행한다.
for_each 예제코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#include <bits/stdc++.h>
using namespace std ;
void aa(int &n){
n = 13;
cout<<n<<endl;
}
int main() {
array<int, 10> a1;
for_each(a1.begin(), a1.end(), aa ) ;
for(auto i:a1){
cout<<i<<" ";
}
}
|
cs |
5 : for_each에서 전달되는 요소를 래퍼런스로 받아 13을 할당 및 값 출력
11 : a1 시작 iterator, 끝 iterator, aa라는 함수로 for_each 사용
12 : 배열값 모두 출력(void aa(int &n))에 의해 배열 값 할당됨
find 사용
find(first, last, val)
InputIterator first: 배열이나 어떤 container 자료형의 시작부 혹은 포인터
InputIterator last: 배열이나 어떤 container 자료형의 끝부 혹은 포인터
searching value: 탐색을 수행할 값
탐색에 성공하면 val과 일치하는 원소들 중 첫 번째 원소의 이터레이터를 리턴, 탐색 실패시 last 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <array>
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
array<int, 5> a1 = {13123, 22, 324141,2, 3};
int *p = find(a1.begin(), a1.end(), 3);
cout<<p-a1.begin();//해당 값이 존재시 위치 반환
return 0;
}
|
cs |
9 : 크기 5짜리 int 배열 선언
10 : find 함수를 실행 한 후 iterator를 저장
11 : 시작주소 - 찾은 iterator 주소의 위치로 값의 위치 반환
sort 사용
함수 파라미터에 배열 넘기기
함수 파라미터에 배열을 넘기는 방법을 정리한다.
void printArraySTD(array<int, 6> &array1){//파라미터로 배열을 넘기는 방법
void printArray(int array1[6]){//파라미터로 배열을 넘기는 방법 2 C-style
'컴퓨터 > 알고리즘:자료구조' 카테고리의 다른 글
[자료구조] C++트리 설명 및 구현(이진트리)/이진트리 구현 (0) | 2022.11.28 |
---|---|
[자료구조] C++ list자료구조 정리/list 함수/list예시 (0) | 2022.11.03 |
[자료구조] C++ vector자료구조 정리/vector 함수 (0) | 2022.10.27 |
[자료구조] C++ 배열 std::array 정리/함수와 동적 할당 등 (0) | 2022.10.02 |
[알고리즘] 버블 정렬 정리 및 구현 (0) | 2021.11.30 |
댓글