컴공 일기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를 선물하세요.
-
진짜진짜 강사가 저렇게 대놓고 한다고? 멍청한거 아니면 일부러 욕먹이는거일수도 있겠는데
-
고대, 서강대는 좀 쳐맞아야지 0 0
조발 안 하는 ㅂㅅ대학들
-
강대 인논 강사는 들어라 0 2
난 bhc 핫뿌링클에 칼럼까지 써서 빨아줄게
-
내가누구? 2 1
서울대 2차떨과 성대 예비 147번의 사나이
-
바로 수분감이나 유형 문제집 해도 돼요?
-
고대조발안함? 2 0
병신학교진짜
-
알바퇴근 슛 2 0
어흐 춥다추워
-
아니근데 수논강사인데 0 1
왜 나한테 부탁하냐,, 수논은 해본적도 없는디
-
자신를 빨아주세요 3 0
-
아래 수논 강사 7 2
여기다 까면 고소당하냐? 건당 3만원 준대 ㅋㅋ
-
아효효
-
강남대성 논술 강사 댓글 조작하네 29 31
방금 받은 오카 고소미 무서워서 강사 이름은 가림 *공익 목적으로 작성한 글입니다...
-
토익 공부는 뭘로 시작하나요 2 1
아예 모르겠네요 그냥 나중에 쓸일이 있지 않을까 해서 미리 따려구요 영어는 웬만하면...
-
그냥 돈벌다 90세되어 생명을 잃으면 게임오버란사실, 아시나요? 3 1
바이오에 항상관심을 가져서 죽는나이를 최대한 늦춰야 합니다.
-
설경 갈바엔 연고전전가지 22 1
걍 sk하이닉스,삼전이 낫지 설경 나와봤자 고시낭인인데 아님 가천한되면 무조건 한의대감 ㄹㅇ
-
코노특 2 1
친구들이랑 들어가서 일단 돈먼저 넣었는데 보니까 TJ면 배신감 오짐 돈넣어서...
-
과외 구해야겠다... 12 7
광고 표지 제작 완
-
독서공부법 0 0
강기분 3주차까지했는데 너무 안느는 느낌이고 체화가 안되는느낌인데 어떻게 학습해야하나요 ㅠ
-
노래방 1000원에 5곡 4 2
본가올때마다 매일 1시간씩 다니는 듯
-
국어 기출 푸는데 2 0
지문 내용이랑 답이 반사적으로 기억나시는 분들은 그냥 참고 푸시나요??
-
생윤이랑 윤사중에 3 1
뭐가 더 50점 받기 수월한가요 물론만점은둘다어렵겟지만 완전 쌩노베사탐런자에게 뭐가...
-
의뱃 신청해야지 7 5
헤헤
-
목표는 1 2
전북대 의대
-
이게 국룰인데
-
. 2 1
-
학교 근처에 1000원에 15분인 노래방이 있었음 1 3
점수 제거하고 간점하면 15분에 4곡도 나오니까 ㅅㅌㅊ네 했는데 어떤 방을 가보니...
-
극대극소 처음배울때 학원에선 09교과식 정의로 배웠음 6 0
극대극소는 증감이 바뀌는 지점 정도로 배웠는데, 고2 2학기에 수2 교과서 받았을때...
-
해방촌 가는 길 0 0
개추워
-
약속의 5시 조발 19분 전 1 1
5시에 하면 딱 24시간 조발이다
-
외대 약속의 5시조발? 4 1
혼자 약속을 몇번 하고 몇번 실망하는지ㅋㅋㅋ
-
엉엉
-
고대 조발 잘 안하나요?? 5 3
아니 왜 하루이틀은 빨리 발표했던것만같죠 제 희망사항??? 고려 고대 조발
-
시간이 녹는다 1 1
왜 수능이 10주 전이엇던거지
-
5시까지만 기다려보고 1 1
자살해야겠다
-
요즘 심심할때마다 가서 네곡 땡기고오는데
-
지1 실모 하방을 높이고 싶다 3 1
하방이 너무 낮음
-
1년전 나에게… 0 3
연약약 당당하게 씀 캬
-
100점대 아니면 "스키밍" 하지마라 의미 1도 없다 같은 학원 아닌가...
-
괜찮은 선택이겠죠? 집이 광주고 몰래 반수할거라 서울로 가기는 부담스럽고 어차피...
-
가군에 성약 나군에 이약쓰면 1 0
다군에 뭐써야댐
-
순수재미를 위한 수능 응시가 처음이 됨
-
어디서 제일 두각을 드러내냐면 바로 이 입시판인거 같아요 가끔가다가 진학사 기준...
-
군필오수vs미필삼수 3 0
둘중 하나 무조건 해야하면 뭐고름?? 대학은 같다고 가정
-
공부 안하는 삼수생 동생 0 1
어떻게 해야하나요? 걍 때려치우라 할까요 놔둘까요? 3살차이 자매고요 학벌콤플렉스...
-
수특 수완이 권당 5만원도 아니고 매우 합리적인 가격인데 몇 만원씩 하는...
-
피말린다 이거 추합안됨? 1 0
25 34명 24 4명 23 7명 추합 정원 35명 나 군 본인 예비 11
-
이게 되네
-
에타 채팅 왜하는거임? 3 1
걍 질문 올렸는데 채팅와서 뭘자꾸 캐묻는거지;;
씨쁠 하시는줄 알았는데 이건 그냥 씨네요?
예? 아닙니다. 실행 쪽 코드에서는 다분히 C라고 느껴지실 수 있겠지만
위에서 살펴볼 수 있듯이 “dynamic_arr.h”라는 사용자 라이브러리를 부르고 있죠. dynamic_array라는 객체를 생성한 겁니다. 당연히 라이브러리는 C++을 이용했구요 :)
아하.. 잘 모르고 말씀드렸네요;;
어려워..
갠적으로 cpp를 주력으로 쓰는거면 STL은 구현해보는 것도 좋은거같음 이런식으로
동의하는 바입니다. 원래 사실, framework이라는 게 기본적으로 “가져다 쓰기만 하면 된다”는 생각이 기저에 깔리다 보니 너무 쉽게 생각하는 측면도 없지 않아 있습니다. 그렇다고 해서 1부터 100까지 모든 걸 다 개발할 줄 알아야 한다는 건 아니지만, framework의 기본적 구조와 메커니즘을 알아야, 그 위에 잘 올라탈 수가 있다고 생각해요. 또한, 그 프레임워크 위에서 해야 될 짓과 하지 말아야 할 짓을 구분해야 하는데… 이걸 구분하기 위해선 일정수준의 구조적 이해와 흐름은 당연히 알고 있어야 한다고도 봅니다.
그쵸 ‘하지 말아야 할 것’ 그리고 구조를 알아야하는 이게 중요한거같습니다 ㅋㅋㅋ 다른 자료구조는 학습하면서 적당히 익혀지지만 cpp의 벡터나 java의 컬렉션같은 것들은 직접 구현을 해보면 진짜 좋죠 ㅋ