컴공 일기262
게시글 주소: https://orbi.kr/00070997040

엊그제 새벽 즈음 했던 동적배열을 조금 더 만져서 값 초기화까지 되게 구현했네요..
임시객체로 오는 이슈까지 이동시맨틱으로 붙잡고, 배열 덧셈 또한 가능합니다.
꽤 쓸만한 배열이 되겠군요…는 개뿔
std::vector나 std::array에 이미 있는 기능입니다.
“dynamic_arr.h”
#pragma once
#include <iostream>
using namespace std;
class dynamic_array
{
public:
dynamic_array() = default;
explicit dynamic_array(int n);
dynamic_array(const dynamic_array&);
dynamic_array(dynamic_array&&) noexcept;
int* begin() const;
int* end() const;
const int getSize() const;
void PrintData() const;
int operator[] (const int index) const;
int& operator[] (const int index);
dynamic_array operator+(const dynamic_array&);
dynamic_array& operator=(const dynamic_array&);
dynamic_array& operator=(dynamic_array&&) noexcept;
~dynamic_array();
private:
int* data = nullptr;
int size = 0;
};
dynamic_array::dynamic_array(int n)
{
cout << "dynamic_array(int)" << endl;
data = new int[n];
size = n;
}
dynamic_array::dynamic_array(const dynamic_array& rhs)
{
cout << "dynamic_array(const dynamic_array&)" << endl;
this->size = rhs.getSize();
data = new int[size];
for(int i=0; i<size; i++)
{
data[i] = rhs[i];
}
}
dynamic_array::dynamic_array(dynamic_array&& rhs) noexcept
{
cout << "dynamic_array(dynamic_array&&)" << endl;
//의도적인 shallow copy
this->data = rhs.data;
this->size = rhs.getSize();
rhs.data = nullptr;
rhs.size = 0;
}
dynamic_array::~dynamic_array()
{
delete[] data;
}
int* dynamic_array::begin() const
{
return data;
}
int* dynamic_array::end() const
{
return data+size;
}
const int dynamic_array::getSize() const
{
return size;
}
void dynamic_array::PrintData() const
{
for(int i=0; i<this->getSize(); i++)
{
cout << this->data[i] << " ";
}
cout << endl;
}
int dynamic_array::operator[](const int index) const
{
if(index < 0 || index >= this->getSize())
{
cout << "Invalid Index!!" << endl;
exit(-1);
}
return this->data[index];
}
int& dynamic_array::operator[](const int index)
{
if(index < 0 || index >= this->getSize())
{
cout << "Invalid Index!!" << endl;
exit(-1);
}
return data[index];
}
dynamic_array dynamic_array::operator+(const dynamic_array& rhs)
{
dynamic_array retVal(this->getSize() + rhs.getSize());
copy(this->begin(), this->end(), retVal.begin());
copy(rhs.begin(), rhs.end(), retVal.begin() + this->getSize());
return std::move(retVal);
}
dynamic_array& dynamic_array::operator=(const dynamic_array& rhs)
{
cout << "dynamic_array::operator=(dynamic_array&)" << endl;
if(data != nullptr)
delete[] data;
data = new int[rhs.getSize()];
for(int i=0; i<rhs.getSize(); i++)
{
data[i] = rhs[i];
}
size = rhs.getSize();
return *this;
}
dynamic_array& dynamic_array::operator=(dynamic_array&& rhs) noexcept
{
cout << "dynamic_array::operator=(dynamic_array&&)" << endl;
if (this != &rhs) { // 자기 대입 방지
if (data != nullptr) {
delete[] data;
}
data = rhs.data;
size = rhs.size;
rhs.data = nullptr;
rhs.size = 0;
}
return *this;
}
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
경제솔직히진짜개간지남 22
친구들이 내 모의고사 시험지 보면서 멋져.,하악하악 하는걸 볼때마다 경제뽕이...
-
정법 재밌어 3
으흐흐
-
스텝 2부터 숨이 턱턱 조여오면 ㅈ댄 건가요?
-
모든 탐구 중에 1
내가 정상적으로 할 수 있는 과목이 화1 경제 사문 화2인데 화1 화2 하기엔 미적분을 넘 못함
-
진짜 바보 같은 질문이긴 한데요...ㅠㅠㅠ 이 풀이에 대해서 조금 더 자세하게...
-
원래 과탐 안 맞는데 억지 과탐 하던 사람이 사탐 가서 본인이랑 맞는 과목 찾으면...
-
ㅠㅠ
-
[속보] 야5당, 오후 2시 최상목 권한대행 탄핵소추안 발의 93
[속보] 야5당, 오늘 오후 최상목 권한대행 탄핵소추안 발의
-
2026학년도 해군사관학교 모집요강 : 네이버 블로그
-
인강쌤이 중요한 문제만 모아둔건가여?
-
안녕하세요 오르비 디렉터입니다. '오르비에서 판매하는 과탐2 자료를 알아보자'...
-
기억이 안남요...
-
사문은 확정인데 나머지 1개는 뭘로 하는 게 좋을지 고민이 돼서 여쭤봅니다. 사탐은...
-
과탐2개 하느라 ㅈㄴ힘들긴 했음..사탐이 훨 편한가
-
현우진 시발점 들으려 했는데 2023꺼 들어도 괜찮나여? 애매하면 차라리 정병호...
-
현역인데 N제까지 푸는건 ㄹㅇ 어케하는거임 학교다니면서 과탐 숙제, 병호햄...
-
아이폰도 2
지하철 승하차알림 되면 좋겠다 버스 자주 까먹고 못 내려서 자주 쓰는데
-
듣다 지쳐버리거나 질리는 경우가 99%...
-
5년은 쓸거 13인치 살걸..
-
고삼 수능 준비하는데 유형문제집 안풀어도 되나요? 10
고삼 수능 준비하는데 김기현 파데 킥오프하고 유형 문제집(쎈 등) 안풀고 바로...
-
관심 좀 19
관심 고픔
-
a<b일때 루트[a(a+b)]를 작도하시오 너무 뻔하다 싶은건 제가 원하는 풀이가...
-
흐음 2
흐음흐음흐으으으으음흠흠흐으으으으으으으으으으으으음
-
작수 국어5 떴는데 국어 공부 어케해야할지 막막함…올해 3등급은 맞아야하는데 모고...
-
[속보] ‘尹 탄핵’ 찬성 58% vs 반대 36%[한국갤럽] 0
윤석열 대통령 탄핵 찬성이 58%, 반대가 36%라는 여론조사 결과가 21일...
-
오후에 40문제 더풀면 소화기끝
-
하 허리 ㅈㄴ 아프네
-
씨발비갤개븅신새끼들 12
니네가죽였어
-
연락주세요
-
이제 음운론이당 2
오랜만이네 언매 2회독 꼼꼼히 하니깐 선지판단이 바로바로 돼서 너무 재미씀
-
독서실 의자 개구리네..개굴
-
편의점 가서 닭슴살이라도 사먹어야할까요....
-
최저 과탐 필수 2
최저가 3합에 탐구 1개 반영인데 탐구 과탐 필수라면 1. 탐구 반영 안되게...
-
시끄럽더니 그거였구나
-
후반까지 안지치고 가능할까요? 지금 학교 과는 좋은데 전문대라서 너무 짜쳐요...
-
언매 3개월 했는데도 30분 걸리면 화작런이 맞음? 4
기출 교사경 수특까지 다 풀었음 근데도 너무 어려움 아직도 작수 화작 13분컷으로...
-
눈 마주쳐서 인사하니까 맛있어요? 했는데 이거 나 출튀한거 알고 한말일까 결석처리하려나 샹
-
고3 중간고사 공부법 고3을 맞이한 여러분, 안녕하세요. 올해 수험생이라는 생각에...
-
나무나무
-
두오링고 700일 17
갈채하라
-
고2 중간고사 공부법 고등학교 2학년을 맞이한 여러분, '내가 벌써...
-
고1 중간고사 공부법 중학교를 졸업하고, 고등학교에 입학한 여러분. 새 출발을...
-
잠거의못잤어 3
으악
-
대형학원 조교하면서 자기 커리 짜고 교재 만들고 하는사람 몇명 봤는데 이런사람들은...
-
실제로는 한번 잘때마다 몇번씩 꿈을 꾼다고함 그러니까 꿈을 꿔도 기억을 못하면 잘때...
-
22학번이라 강기본 강기분 새기분 정도만 아는 데 요새 많이 듣는 커리는 어떤 게...
-
화작 0틀 87 확통 2틀 80 한지 34 세지 47인데 몇등급예상하시나요??
-
8시 46분에 들어갔는데 이제 깨어남 아무감각이 없더라 30정도 잔듯 시간ㅈㄴ잘가는군..
-
기출 후 N제 1
수학 기출 4개년을 풀이도 다 외울정도로 봤는데, 첫n제로 드릴 ㄱㅊ을까요? 이해원...
-
누가이길까
씨쁠 하시는줄 알았는데 이건 그냥 씨네요?
예? 아닙니다. 실행 쪽 코드에서는 다분히 C라고 느껴지실 수 있겠지만
위에서 살펴볼 수 있듯이 “dynamic_arr.h”라는 사용자 라이브러리를 부르고 있죠. dynamic_array라는 객체를 생성한 겁니다. 당연히 라이브러리는 C++을 이용했구요 :)
아하.. 잘 모르고 말씀드렸네요;;
어려워..
갠적으로 cpp를 주력으로 쓰는거면 STL은 구현해보는 것도 좋은거같음 이런식으로
동의하는 바입니다. 원래 사실, framework이라는 게 기본적으로 “가져다 쓰기만 하면 된다”는 생각이 기저에 깔리다 보니 너무 쉽게 생각하는 측면도 없지 않아 있습니다. 그렇다고 해서 1부터 100까지 모든 걸 다 개발할 줄 알아야 한다는 건 아니지만, framework의 기본적 구조와 메커니즘을 알아야, 그 위에 잘 올라탈 수가 있다고 생각해요. 또한, 그 프레임워크 위에서 해야 될 짓과 하지 말아야 할 짓을 구분해야 하는데… 이걸 구분하기 위해선 일정수준의 구조적 이해와 흐름은 당연히 알고 있어야 한다고도 봅니다.
그쵸 ‘하지 말아야 할 것’ 그리고 구조를 알아야하는 이게 중요한거같습니다 ㅋㅋㅋ 다른 자료구조는 학습하면서 적당히 익혀지지만 cpp의 벡터나 java의 컬렉션같은 것들은 직접 구현을 해보면 진짜 좋죠 ㅋ