컴공 일기262
게시글 주소: https://a.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를 선물하세요.
-
잇올 하원 완료 6
공부할 시간이 너무나 부족하다...
-
요번에 설맞이 n제 수1수2미적 사서 세권 동시에 하루에 5문제씩 풀라했는데 문제...
-
진짜 어려운 격자점 문제 풀고 어떻게 풀어야할 지 일반화 및 알고리즘시키고 싶네요
-
홍대 4
점공 이대로면 또 빵일듯
-
남돌프사 남르비는 진짜 없을듯
-
암컷 도촬 1
-
ㅈㄱㄴ
-
왜클릭?
-
바뀐거 같지 않음? 내 주위만 그런가 다들 탄핵해여한다에서 중립이나 탄핵은 안된다로...
-
대학별 학부생 수 15
서울대 16,662명 카이스트 3,980명 포항공대 1,491명 고려대 서울캠퍼스...
-
1일 40글 5
글써서 버는 덕코만 2000 이젠좀줄여야지
-
미친고훌이있어요 고경 설경 고학부
-
2월쯤부터 현여기 오뿌이들이 갳우 많이 눌러줄듯
-
부산대 합격생을 위한 노크선배 꿀팁 [부산대 25학번] 0
대학커뮤니티 노크에서 선발한 부산대 선배가 오르비에 있는 예비 부산대학생, 부산대...
-
신기한 오르비언들은 9월의 어느 무더운 초가을밤 무의식 중에 써재낀 똥글은 좋아요...
-
설자전 11
왤케점공안하노
-
인스타든 오르비든
-
26수능 정법 1
재수생인데 정법 26수능도 25처럼 매우 고여있을까요? 생윤 사문으로 런해야하나…
-
https://orbi.kr/00071064739/ 칼럼 퀄리티 좋은데 우리 위로 올려줘요
-
반올림해서 계산하라는 뜻..?
-
계획변경 4
실전개념은 3월 학평 전까지 워크북까지 끝내는걸루.. 이렇게 하다간 애매하게 해서...
-
https://orbi.kr/00071064739/https://orbi.kr/000...
-
학원에서 수능 실전 개념 하고 있는데 뉴런을 병행해서 해야할까요? 궁극의 뉴런이라고...
-
제발 내가 gay라고 해줘
-
유형서 문제집이랑 시발점 워크북 풀고 기출문제 푸려는데 뭐가 더 좋을까요? 마플...
-
공부해야할 개념은 별로 없다고들 하시던데요 그럼 문풀을 많이 해야하나요???...
-
이명학 신택스 리드앤 로직 알고리즘 작년에 산 책으로 이번년도 강의 들어도 되나요? 1
제가 작년에 신택스 리드앤로직 알고리즘책을 샀는데 이번년도에 나온강의로 들어도...
-
인스타 딱히 안해서 비공개 걸고 아는 사람 팔로우도 안걸고 인스타 아이디 물어보거나...
-
닉변 완. 7
아직도 믿기지 않네
-
입시,논술,경시 및 올림피아드,퍼즐 ,대학교 수학 및 통계학 문제 풀면 시간 살살...
-
추천 부탁드립니다 22
-
안녕하세요 저는 국어 모고 5등급 예비 고3 입니다 윤혜정의 나비효과 +워크북까지...
-
추천해주세요
-
인생은 모르겠고 9
캬루는 귀여운듯
-
시대재종 사탐 3
노베로 가서 들어도 괜찮나요? 사문 생윤 한다면
-
김범준 0
풀이 스타일이 어떠신가요 메가 대성 강사들이랑 비겨했을때
-
ㅈ됨 오늘까지 대학 지원인 줄 알고 생각만 하고 있었는데 지원 못함 참고로 나 재수생 ㅛㅂ 13
님들 진학사에 지원대학 추가하셈
-
광고계정이랑 가계정들이 팔로우 ㅈㄴ 걸어댐
-
점심 저녁 다 안먹었고 라면 치킨 이런 거는 먹고 싶지 않은데 패스트푸드 빼고 ㅊㅊ해주세욤
-
21명 뽑는데 ㅋㅋ 하....
-
내가 상근으로 내년 6월에 가게 되는데 지금 주민등록상 주소지가 지방임 근데...
-
집에 마플사둔게 있던데…쎈에 있는 유형이 없을까 걱정이네요 쎈 말고 마플풀어도...
-
복종시키고싶어
-
셈퍼 점공계산기 2
얘네되는거맞겠죠 ㅠㅠㅠㅠ????
-
찾아봐도 정보가 없네요 대성입니다
-
이거로 하루에 1번씩 분석하는거 진짜 개 낭비인 거 같단 생각.. 변표 이후부터...
-
흙수저라 걱정하는 글 많이보이길래 ㅇㅇ 서울-지방 페이 차이 심해서, 서울 아니고...
-
안경 ㅇㅈ 7
압축 4번 조져도 저게 한계라서 어쩔수 없음
-
ㅈㄱㄴ
씨쁠 하시는줄 알았는데 이건 그냥 씨네요?
예? 아닙니다. 실행 쪽 코드에서는 다분히 C라고 느껴지실 수 있겠지만
위에서 살펴볼 수 있듯이 “dynamic_arr.h”라는 사용자 라이브러리를 부르고 있죠. dynamic_array라는 객체를 생성한 겁니다. 당연히 라이브러리는 C++을 이용했구요 :)
아하.. 잘 모르고 말씀드렸네요;;
어려워..
갠적으로 cpp를 주력으로 쓰는거면 STL은 구현해보는 것도 좋은거같음 이런식으로
동의하는 바입니다. 원래 사실, framework이라는 게 기본적으로 “가져다 쓰기만 하면 된다”는 생각이 기저에 깔리다 보니 너무 쉽게 생각하는 측면도 없지 않아 있습니다. 그렇다고 해서 1부터 100까지 모든 걸 다 개발할 줄 알아야 한다는 건 아니지만, framework의 기본적 구조와 메커니즘을 알아야, 그 위에 잘 올라탈 수가 있다고 생각해요. 또한, 그 프레임워크 위에서 해야 될 짓과 하지 말아야 할 짓을 구분해야 하는데… 이걸 구분하기 위해선 일정수준의 구조적 이해와 흐름은 당연히 알고 있어야 한다고도 봅니다.
그쵸 ‘하지 말아야 할 것’ 그리고 구조를 알아야하는 이게 중요한거같습니다 ㅋㅋㅋ 다른 자료구조는 학습하면서 적당히 익혀지지만 cpp의 벡터나 java의 컬렉션같은 것들은 직접 구현을 해보면 진짜 좋죠 ㅋ