• 회원가입
  • 로그인
  • 구글아이디로 로그인

[basic] C++ - Arrays (배열)

5,523  
목차
  1. C++ 배열 선언
  2. 배열 요소 접근 (= 색인번호)
  3. 배열 요소 변경
  4. 배열 길이 (= 배열 요소 개수)
  5. 배열 반복 실행 (for / for_each 반복문)
  6. 다차원 배열

 

※ 배열은 단일 변수에 여러 값을 저장할 때 사용.

 

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 



분류 제목
basic C++ - Home (입문) - 추천 링크
basic C++ - Intro (소개) - 용도・특징
basic C++ - Start (시작) - Code::Blocks (코드 블럭스) 설치/실행/세팅. ※ 한글 깨짐 해…
basic C++ - Syntax (구문)
basic C++ - Output (출력)
basic C++ - New Lines (줄바꿈)
basic C++ - Comment (주석)
basic C++ - Variable (변수) ★ ※ 상수
basic C++ - User Input (사용자 입력)
basic C++ - Data Type (데이터 타입) - 자료형
basic C++ - Operator (연산자)
basic C++ - String (문자열)
basic C++ - Math (수학)
basic C++ - Boolean (참거짓)
basic C++ - If ... Else - (이프 조건문) ★
basic C++ - Switch (스위치 조건문) ★
basic C++ - While Loop (와일 반복문) ★
basic C++ - For Loop (포 반복문) ★
basic C++ - Break/Continue (브레이크/컨티뉴) 키워드 ★ - 반복문 빠져나가기 / 특정 조건 건너…
basic C++ - Arrays (배열)
1/2
목록
찾아주셔서 감사합니다. Since 2012