1️⃣ 알고리즘 코드카타
▪ assign 함수
기존 컨테이너의 모든 요소를 제거하고 새 데이터로 대체(크기 자동 재조정)
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> source = {1, 2, 3, 4, 5};
vector<int> vec;
// 5개의 요소를 10으로 초기화
vec.assign(5, 10);
// source의 내용을 destination에 복사
vec.assign(source.begin(), source.end());
return 0;
}
▪ copy 함수
기존 크기와 내용을 유지한 채 복사(크기 고정)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> source = {1, 2, 3};
vector<int> destination(5, 0); // 크기 5로 초기화
// std::copy로 복사
copy(source.begin(), source.end(), destination.begin());
for (int val : destination) {
cout << val << " "; // 출력: 1 2 3 0 0
}
return 0;
}
[두 개 뽑아서 더하기]
▪ 중복 없는 배열을 사용하고 싶을 땐 set!
https://buly.kr/7mAr1lP
[가장 가까운 같은 글자]
▪ 특정 문자의 인덱스를 저장하고 불러오고 싶을 땐 map!
https://buly.kr/7FQa5KW
[푸드파이트 대회]
2️⃣ 복습
▪ 오버로딩과 오버라이딩
오버로딩 : 캡슐화를 통해 사용자에게 단순한 인터페이스 제공(다른 매개변수로 동일한 동작)
오버라이딩 : 상속과 다형성을 구현하여 동일한 이름으로 다른 동작을 가능하게 함
▪ 포인터 산술 연산
포인터 타입에 따라 이동 단위(int는 4바이트 double은 8바이트…)가 달라지므로 주의
3️⃣추가 공부
🔹 상속의 virtual 키워드
virtual이 없는 함수:
- 정적 바인딩으로 동작(컴파일 시간에 호출할 함수 결정)
- 부모 포인터를 통해 호출하면 부모의 함수가 호출
virtual이 있는 함수:
- 동적 바인딩으로 동작(런타임에 호출할 함수 결정) → 다형성 구현
- 부모 포인터를 통해 호출하면 자식의 재정의된 함수가 호출
#include <iostream>
using namespace std;
class Parent {
public:
virtual void show() {
cout << "Parent's show function" << endl;
}
};
class Child : public Parent {
public:
void show() override {
cout << "Child's show function" << endl;
}
};
int main() {
Parent* p = new Child();
p->show(); // 출력: Child's show function (동적 바인딩)
delete p;
return 0;
}
'TIL' 카테고리의 다른 글
[250113 TIL] 협업으로 GIT 첫 사용! (0) | 2025.01.13 |
---|---|
[250110 TIL] 텍스트 RPG 팀 프로젝트 시작..! (0) | 2025.01.10 |
[250108 TIL] 언리얼 C++ 사용하면서 주의할 점 (0) | 2025.01.08 |
[250107 TIL] 패턴 매칭, 문자열 검색, 치환 등의 작업에 유용한 regex (0) | 2025.01.07 |
[250106 TIL] 정적/동적 배열과 벡터, 생성자와 소멸자에서 놓쳤던 부분 (0) | 2025.01.06 |