이 글은 공부하면서 정리한 '학생'의 글입니다. 따라서, 틀린 부분이 있을 수 있음을 명시합니다.
혹시 틀린 부분이 보이시거나, 추가로 알려주실 수 있으신 분이 계시다면 언제든 환영이니 댓글 달아주세요:)
참고 : 바킹독블로그(https://blog.encrypted.gg/927)
이번 시간에는 자료구조 첫 번째, 배열에 대해서 알아보겠습니다.
: 연속된 메모리 주소에 데이터를 저장한 자료구조
int a[4];
int a[] = {1, 2, 3, 4};
// idx: 삽입할 공간, num: 넣을 원소, arr: 해당 배열, len: 배열의 길이
void insert(int idx, int num, int arr[], int len) {
for(int i = len; i < idx; i--) {
arr[i] = arr[i - 1];
}
arr[idx] = arr[num];
len--;
}
// idx: 원소를 지울 공간
void erase(int idx, int arr[]), int len) {
len--;
for(int i = idx; i < len; i++) {
arr[i] = arr[i + 1];
}
}
int a[30];
int b[30][30];
// 1. memset을 이용(#include<cstring>) -> 비추천
memset(a, 0, sizeof a);
memset(b, 0, sizeof b);
// 2. for문을 이용
for(int i = 0; i < 30; i++)
a[i] = 0;
for(int i = 0; i < 30; i++)
for(int j = 0; j < 30; j++)
b[i][j] = 0;
// 3. fill함수 이용(#include<algorithm>) -> 추천
fill(a, a+30, 0);
for(int i = 0; i < 30; i++)
fill(b[i], b[i]+30, 0);
#include<iostream>
#include<vector>
vector<int> v1(3, 4); // {4, 4, 4}
vector<int> v2(3); // {0, 0, 0}
vector<int> v3 = {1, 2, 3, 4} // {1, 2, 3, 4}
vector<int> v4; // {}
v1.push_back(5); // {4, 4, 4, 5} 시간복잡도: O(N)
v3.pop_back(); // {1, 2, 3} 시간복잡도: O(N)
#include<iostream>
using namespace std;
int a[4];
int main(){
int b[4];
for(int i = 0; i < 4; i++)
cout << a[i] << " "; // 0 0 0 0
cout << "\n";
for(int i = 0; i < 4; i++)
cout << b[i] << " "; // -858993460 -858993460 -858993460 -858993460
return 0;
}