컴공 일기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를 선물하세요.
-
되게 가면쓰고 사는느낌이 듦 나를 다 보여주면 사람들이 싫어할거같고 외면할거같아서...
-
스블,한완기로 기필코 미적 원점수 92점 이상을 받으리라.
-
6모 대박 으쌰으쌰
-
모르겠네여~ 풀이 좀..
-
아 자살하고싶다 1
그냥 난 갰,ㅂ허수짓만 하고잇음.........학원만 존나뺑뺑이에... 자살하자
-
의사 망해서 앞으로 입결이 폭락할 것이기 때문.. 의사 하고 싶어서 의대 간거라...
-
머리가 리셋돰 4
바보가되
-
아님 그냥 풀고 치우나요? 다양하게 많이 푸는게 최고인가요?
-
영어공부 0
가 젤 귀찮고 노잼임
-
순공 11시간랫어요!!! 제 기준 순공은 노래도 안듣고 오로지 공부에만 집중하는...
-
써니같은여친기원 2
연고티비 써니임
-
이건 너무 애매한거아닌가? 김상훈 제자로서 글자에 반응했건만..
-
과외판에 의대생이 너무많음
-
일단 최대한 만들어보고 안되겠으면 연계기출 정리라도 해서 올릴게요 죄송합니다....
-
통계 빈곤이랑 성불평등은 최적쌤이 굳이 지금 할 필요없거 6.9 경향보고 나중에...
-
이렇게된이상 XX111을 확보해보자
-
공부도 재밌고 apple bus 몰라도 연대치대 ㅆㄱㄴ이고 범부급 국영탐이면...
-
gpt 야무지네 12
소설은 기가막히게 잘 써
-
시험낼때 개ㅈ갇은 애매한거 들고와서 손가라걸기하려하면 손가락 다잘림
-
모소 대나무 이야기 16
옛날 옛날 중국의 동부 지방에 새로 이사온 장사꾼이 있었는데, 새로운 공간에서...
-
걍 쭉풀고 화작 나중에 푸는 저같은 분들 많으신가요? 전 시간을 신경 ㅈㄴ쓰는...
-
모든과목의 모든정보와 논리를 명제논리로 나타내고 수험자는 알아낸 명제를 태블릿에...
-
대신 수능 공부할 때도 수학에 꽂히다시피 하긴 했음
-
미친개념vs뉴런 1
실전개념 강좌 뭐가 더 낫긔?
-
현재를 살자 0
이미 지나간 과거와 존재하지 않는 미래 사이에 가장 명확한 건 내가 살아가는 바로 이 지금
-
쫀득하고 꼬쏘하니 달짝지근하다
-
신 3
발
-
왜 모든 과목의 정보를 한가지 수단으로 나타내려 하지않지? 0
모든과목이 담고있는 논리를, 단하나의 논리체계로 표현가능한데 이걸 왜안하냐고 씨...and 발...
-
[앞부분 줄거리] 평가원은 2025 수능에서 난이도에 비해 표점이 낮게 나와 미적분...
-
근데 n제 풀때 2
모든파트 전부 푸는것보다 약점만 모아서 푸는게 훨씬 효율적이지않음? 항상...
-
명제논리 몇개되지 않는 규칙 무모순이며 참이면 증명가능한것(완전성) 모든논리를...
-
저녁은 참고 자는게 낫겠죠? 근데 또 배고픈거 같은건 기분탓인가
-
왜 못본사이에 더 진해진것같지
-
인터넷 그만해야지 13
하루의 3분의2를 인터넷에서 보냈어..
-
재능이 더 큰부분을 차지하는건 사실인데 이거가지고 "해봤자 재능있는 사람 못이기는데...
-
공개하긴 좀 그런데 내가 다 메모중임...
-
뇌가 느려진거보다 손이 더 느려져서 손이 못따라가서 계산 꼬이는 경우가 부지기수임
-
인문논술은 한다는 말이 국어 잘하는거랑 아무 상관없다 국어 잘할필요 전혀없다 이러네...
-
오래된 생각이다
-
결혼하고 아이 생기면 어릴때부터 책 읽어줄 생각이긴 해여. 수능이랑 별개로라도...
-
처음엔 둘은 대립항이라서 논쟁이 성립된거지만 노력도 재능이라고 하는순간 모든건...
-
20일만에 1
손바닥 근육통와서 샤프 잡기 어려워짐.. 다른 손으로 꾸역구역오다가 그 손도...
-
국어못해도 괜찮다 10
대 논 술 국어 7등급도 메이저의대 가게 해준다
-
케이온 감상완료 10
쿄애니는 goat다 나, 친구 포함 7명밖에 없어서 쾌적하게 시청했음
-
작년부터 엔제벅벅중인데 지인선이랑 이해원시즌2는 미적이 없어서 드릴5랑 드릴드랑...
-
나에 대한 믿음 2
음. 불편한 공부를 해보자
-
평가원이 회수해간 시험지 교수들에게 보여주려나ㅋㅋ 이렇게 출제했을때 이렇게 애들이...
-
마지막에 본 영화가 오펜하이머라 그런지 조금 실망함 그래도 재밌어요
-
파일 다운해서 보시면 편합니다.
-
하는 엠생이 있다면 믿으실까요...
씨쁠 하시는줄 알았는데 이건 그냥 씨네요?
예? 아닙니다. 실행 쪽 코드에서는 다분히 C라고 느껴지실 수 있겠지만
위에서 살펴볼 수 있듯이 “dynamic_arr.h”라는 사용자 라이브러리를 부르고 있죠. dynamic_array라는 객체를 생성한 겁니다. 당연히 라이브러리는 C++을 이용했구요 :)
아하.. 잘 모르고 말씀드렸네요;;
어려워..
갠적으로 cpp를 주력으로 쓰는거면 STL은 구현해보는 것도 좋은거같음 이런식으로
동의하는 바입니다. 원래 사실, framework이라는 게 기본적으로 “가져다 쓰기만 하면 된다”는 생각이 기저에 깔리다 보니 너무 쉽게 생각하는 측면도 없지 않아 있습니다. 그렇다고 해서 1부터 100까지 모든 걸 다 개발할 줄 알아야 한다는 건 아니지만, framework의 기본적 구조와 메커니즘을 알아야, 그 위에 잘 올라탈 수가 있다고 생각해요. 또한, 그 프레임워크 위에서 해야 될 짓과 하지 말아야 할 짓을 구분해야 하는데… 이걸 구분하기 위해선 일정수준의 구조적 이해와 흐름은 당연히 알고 있어야 한다고도 봅니다.
그쵸 ‘하지 말아야 할 것’ 그리고 구조를 알아야하는 이게 중요한거같습니다 ㅋㅋㅋ 다른 자료구조는 학습하면서 적당히 익혀지지만 cpp의 벡터나 java의 컬렉션같은 것들은 직접 구현을 해보면 진짜 좋죠 ㅋ