목차
C++ 배열 선언
배열 요소 접근 (= 색인번호)
배열 요소 변경
배열 길이 (= 배열 요소 개수)
배열 반복 실행 (for / for_each 반복문)
다차원 배열
※ 배열은 단일 변수에 여러 값을 저장할 때 사용.
C++ 배열 선언
[방법1] - 배열 변수 선언과 동시에 중괄호 {} 이용해 요소 추가.
data_type [ length ] arr_name = { emt1, emt2, .... };
또는,
data_type [ ] arr_name = { emt1, emt2, .... };
※ 주의.
length 표시 여부에 따라, 배열에 요소 추가 방식이 달라짐.
자세한 건, 아래 배열 길이 편 참고.
(예제1)
요소 개수 3개인 문자형 배열 경우,
string[3] codes = {"HTML", "CSS", "JS"} ;
string[] codes = {"HTML", "CSS", "JS"} ;
(예제2)
요소 개수 4개인 정수형 배열 경우,
int[4] nums = {1, 2, 3, 4};
int[] nums = {1, 2, 3, 4};
[방법2] 배열 변수 먼저 선언 후, 나중에 색인번호 이용해 요소 추가.
※ 이 방식도 length 생략하고 선언 가능.
(예제)
string codes[3];
codes[0] = "HTML";
codes[1] = "CSS";
codes[2] = "JS";
cf. Java 경우, 배열 개수 적는 [] 부분이 자료형 바로 뒤에 옴.
배열 요소 접근 (= 색인번호)
요소 개수가 n개인 배열 색인번호 (= 위치)는 0 부터 시작.
(예)
[0 ] 첫번째 요소, [1] 두번째요소, ... , [n-1 ] 마지막요소.
주의: C++은 음수 색인 지원 X.
[예제]
#include <iostream>
#include <string>
using namespace std;
int main() {
string codes[3] = {"HTML", "CSS", "JS"};
cout << codes[0];
return 0;
}
결과값: HTML
배열 요소 변경
※ 색인번호 이용해 요소값 재설정.
#include <iostream>
#include <string>
using namespace std;
int main() {
string codes[3] = {"HTML", "CSS", "JS"};
codes[0] = "C++";
cout << codes[0];
return 0;
}
결과값: C++
배열 길이 (= 배열 요소 개수)
1. 배열 길이 미지정과 지정 차이
1. 배열 길이 미지정 경우.
string codes[] = {"HTML", "CSS", "JS"};
위처럼 배열 선언 시 길이 미지정 시, 배열 길이가 최초 배열 요소 개수인 3으로 고정됨. 그 결과, 나중에 배열에 요소 추가해야 할 경우 기본 배열에 들어갈 공간이 없어 기존 배열 전체를 취소하고 다시 새 요소 추가된 배열로 재정의 필요.
string codes[] = {"HTML", "CSS", "JS"};
string codes[] = {"HTML", "CSS", "JS", "PHP", "SQL"};
2. 배열 길이 지정 경우.
string codes[5] = {"HTML", "CSS", "JS"};
위처럼 배열 길이 넉넉히 지정 시, 현재 요소 개수는 3개이지만
실제 배열 길이는 5라서 배열의 색인번호 이용해 요소 추가 가능.
(예)
#include <iostream>
#include <string>
using namespace std;
int main() {
string codes[5] = {"HTML", "CSS", "JS"};
codes[3] = "PHP";
codes[4] = "SQL";
for(int i = 0; i < 5; i++) {
cout << codes[i] << "\n";
}
return 0;
}
결과값:
HTML
CSS
JS
PHP
SQL
2. 배열 길이 미지정 된 경우 배열 길이 구하기.
※ 배열 길이 = sizeof(arr) / sizeof(type)
※ for 반복문 돌릴 때 유용.
#include <iostream>
#include <string>
using namespace std;
int main() {
int length = 0;
// int 배열
const int i_arr[] = {1,2,3,4,5};
length = sizeof(i_arr)/sizeof(int);
cout << "int 배열 길이: " << length << endl; // 5
// double 배열
const double d_arr[] = {12.34, 56.78, 9.10};
length = sizeof(d_arr)/sizeof(double);
cout << "double 배열 길이: " << length << endl; // 3
// char* 배열
const char* c_arr[] = {"Homzzang","com"};
length = sizeof(c_arr)/sizeof(char*);
cout << "char 배열 길이:" << length << endl; // 2
// string 배열
const string s_arr[] = {"HTML","CSS","JS"};
length = sizeof(s_arr)/sizeof(string);
cout << "string 배열 길이:" << length << endl; // 3
return 0;
}
※ 다차원배열 행/열 길이는 아래 다차원배열 강의 참고.
cf. Java 경우, arr .length 속성 이용.
배열 반복 실행 (for / for_each 반복문)
[for 반복문] - 배열 요소 개수 알아야 가능.
#include <iostream>
#include <string>
using namespace std;
int main() {
string codes[3] = {"HTML", "CSS", "JS"};
for(int i = 0; i < 3; i++) {
cout << codes[i] << "\n";
}
return 0;
}
결과값:
HTML
CSS
JS
[for_each 반복문] ※ 배열 요소 개수 몰라도 가능.
#include <iostream>
#include <string>
using namespace std;
int main() {
string codes[] = {"HTML", "CSS", "JS"};
for(string x : codes) {
cout << x << "\n";
}
return 0;
}
결과값:
HTML
CSS
JS
다차원 배열
[다차원배열 변수선언]
1. 다차원 배열 : 배열이 요소인 배열.
(예)
int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
또는,
int nums[][4] = { {1, 2, 3, 4}, {5, 6, 7} };
주의: 행 숫자 2는 생략 가능하나, 열 숫자 4는 생략 불가.
2. 차원수만큼 '배열명 ' 뒤에 대괄호 사용.
(예) 2차원 경우, 대괄호 2개 사용.
cf. Java 경우, 차원수만큼 '자료형 ' 뒤에 대괄호 사용.
[다차원 배열 행/열 길이]
int rows = sizeof nums / sizeof nums [0]; // 행
int cols = sizeof nums [0] / sizeof( int) ; // 열
주의: 자료형인 int 경우엔 반드시 소괄호로 감싸야 에러 발생 X.
(예제)
#include <iostream>
using namespace std;
int main() {
int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
int rows = sizeof nums / sizeof nums[0]; // 행
int cols = sizeof nums[0] / sizeof(int); // 열
cout << rows << "\n"; // 2
cout << cols; // 4
return 0;
}
[다차원배열 색인번호]
#include <iostream>
using namespace std;
int main() {
int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
int x = nums[0][2];
cout << x;
return 0;
}
결과값: 3
[정적 다차원배열 반복실행] - for문
※ 배열 행/열 요소 길이 정해져 빈 자리에 0이 추가되는 문제 발생.
※ 그 결과, 요소에 포함된 0과 자동 추가된 0을 구별할 수 없게 됨.
※ 이 문제 해결하려면, vector 이용한 동적 다차원배열 이용 필요.
#include <iostream>
using namespace std;
int main() {
int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < 2; ++i) {
for(int j = 0; j < 4; ++j) {
cout << nums[i][j] << "\n";
}
}
return 0;
}
결과값:
1
2
3
0
5
6
7
0
[동적 다차원배열] ★ - for 반복문
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
vector<vector<int>> nums = {
{1, 2, 3, 0},
{5, 6, 7}
};
int rows = nums.size();
for (int i = 0; i < rows; ++i) {
int cols = nums[i].size();
for(int j = 0; j < cols; ++j) {
cout << nums[i][j] << "\n";
}
}
return 0;
}
결과값:
1
2
3
0
5
6
7
냑냑 님 (210129) https://sir.kr/qa/397373
[다차원 반복 실행] - for_each 반복문
※ 1차원 배열을 다차원 배열 방식으로 출력
#include <iostream>
using namespace std;
int main(){
int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (auto &i : a){
for (auto &j : i){
cout << j << " ";
}
cout << endl;
}
}
결과값:
1 2 3
4 5 6
7 8 9
https://stackoverflow.com/questions/16509079
주소 복사
랜덤 이동
최신댓글