컴공 일기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를 선물하세요.
-
3점 3개 틀림 7
본실력 나와서 울었어
-
tim 시간 0
Tim 시간 빠듯한거 정상인가요? 그냥 빠듯한게 아니라 복합지문 못건들고 넘겼는데...
-
확통을 아무리 해도 경우의 수 분류하는거를 못하겠더라고요 몇개월을 파도파도 3점...
-
그래야 수능을 다시 준비하든 말든 계획을 세우지
-
ㄱㄱ혓
-
전적대 고대경영 30대 직장인 문디컬 한의대 얼마나 걸릴까요? 9
안녕하세요? 저는 30대 중반 9-6 직장인입니다. 직장 병행으로 문디컬 한의대를...
-
하... 기출 3회독하고 n제나 ㅈㄴ해야겠다
-
제안서 대충 6천자 썼는데 날라갔는데 시발시발시발 다시써도 그렇게 쓸 수 있을까...
-
bbu bbu bbung
-
학종 블라인드 8
다들 연고대 학종은 학교 선배들 실적이 중요하다는데 차피 블라인드 평가 아님? 학교...
-
슬로모 리드머 2.5는 말도안된다
-
본인 현역때 3모 ㅈㄴ잘봤는데 그해 수능망해서 재수했음
-
1시간 반동안 제안서 썼는데 날라감 시발뭐야
-
어쩌죠 공부보단 룸메랑 이런부분이,, 걍 악깡버가 맞나요
-
해설지 보고 이해가 잘 안됨 ..
-
배고파
-
외모로 까이던데
-
수학 인강 한강듣는데 필기,문제예습 하다보면 30분에서 많게는 1시간까지...
-
본인 수논 듣고있는데 잘가르치긴하더라 ㅋㅋㅋ
-
본인 우파인데... 10
희망회로가 아니라 진짜로 윤석열 복귀해서 민주당이랑 한동훈세력들 다 죽일것같음...
-
모평, 학평 백분위 늘 96쁠마로 유지됐고 작수 백분위 92받았는데 미적2틀...
-
원고적격 흠결에 협의의 소의 이익도 없다고 판사님들이 몇번을 말함; 왜 자꾸...
-
사탐 공대 8
가서 따라가기 힘든가요?? 물리 배운다고 해도 고등학교 교육과정에서는 많이 배우는거...
-
MT갔는데 마니또 한다고... 근데 마니또가 쌩판 모르는 이성이고... 그래서 그분...
-
사람 맞냐
-
많은 양을 하려고 하니까 안되는 거임 진심으로 50분 공부 10분 휴식 루틴으로...
-
근데 모 명문대 기계과 간 친구 수업 듣는 거 보니깐 경악스러움...
-
무휴학 반수를 결심하고 일단 국/수 공부는 하고있는데 선택과목이 고민입니다 작수...
-
https://m.cafe.naver.com/ca-fe/web/cafes/101979...
-
눈이 ㅈㄴ커짐ㅋㅋㅋㅋ
-
이제 집간다 3
자유에요~~~!!!
-
내신 때 화생지 했는데 교과로 원자력공학과 갈 수 있나?
-
대체 이어폰을 왜 안쓰는거지???????????????? 3
나 진짜 이해가안되네
-
이번 달 안에는 개념 강의 다 해야 하는데 ㅠㅠ
-
나중에 보면 이해 잘 안되는건가요..?
-
저사람이 나를 한대쳣다고해서 내가 저사람을 한대 치거나 사적제제를 가하는게...
-
제목은 운지 열풍~
-
??
-
질문있으면 해도돼요!!
-
고대 25학번 113명 모두 등록…의대학장 "상당수 학생 복귀중" 12
[서울경제] 21일 1학기 등록을 마감하는 연세대·고려대·경북대에서 의대생 복귀...
-
윤사 1
ㅈㅂ인줄 알고 방학에 유기했다가 문과쟁이들한테 1등급 뺏길 사람은 개추
-
경찰, 복학비난 의대생 송치…"조리돌림 등 복귀방해 구속수사"(종합2보) 4
의대생 커뮤니티 등서 '공개 저격·집단괴롭힘'…모욕·정통망법 명예훼손 혐의 경찰청...
-
뭐가 문제지 0
ㄹㅇ
-
근데 의도적으로 선 넘는건 왜 그러는고야
-
고2 10모 3등급 지난주에 풀어본 2303 2등급 기회 1번 중복 시 n분의 1
-
저작권 이슈로 문제 및 선지 사진은 잘랐습니다 전반적으로 다양한 풀이를 연습해보기...
-
주제가 성찰인데 선지로 풍경 관조 내는거 악질아님? 내면 관조면 이해라도 되는데
-
기다려주시는 분이 많은 것 같아서 감사하지만 여러 일이 겹치다 보니 컨텐츠 제작은...
-
공부 관련되어서 11
내가 도움을 줄 수 있는게 뭐가 있을까..
-
출발
씨쁠 하시는줄 알았는데 이건 그냥 씨네요?
예? 아닙니다. 실행 쪽 코드에서는 다분히 C라고 느껴지실 수 있겠지만
위에서 살펴볼 수 있듯이 “dynamic_arr.h”라는 사용자 라이브러리를 부르고 있죠. dynamic_array라는 객체를 생성한 겁니다. 당연히 라이브러리는 C++을 이용했구요 :)
아하.. 잘 모르고 말씀드렸네요;;
어려워..
갠적으로 cpp를 주력으로 쓰는거면 STL은 구현해보는 것도 좋은거같음 이런식으로
동의하는 바입니다. 원래 사실, framework이라는 게 기본적으로 “가져다 쓰기만 하면 된다”는 생각이 기저에 깔리다 보니 너무 쉽게 생각하는 측면도 없지 않아 있습니다. 그렇다고 해서 1부터 100까지 모든 걸 다 개발할 줄 알아야 한다는 건 아니지만, framework의 기본적 구조와 메커니즘을 알아야, 그 위에 잘 올라탈 수가 있다고 생각해요. 또한, 그 프레임워크 위에서 해야 될 짓과 하지 말아야 할 짓을 구분해야 하는데… 이걸 구분하기 위해선 일정수준의 구조적 이해와 흐름은 당연히 알고 있어야 한다고도 봅니다.
그쵸 ‘하지 말아야 할 것’ 그리고 구조를 알아야하는 이게 중요한거같습니다 ㅋㅋㅋ 다른 자료구조는 학습하면서 적당히 익혀지지만 cpp의 벡터나 java의 컬렉션같은 것들은 직접 구현을 해보면 진짜 좋죠 ㅋ