오유인페이지
개인차단 상태
★☆님의 개인페이지입니다
회원가입 : 17-07-17
방문횟수 : 493회
닉네임 변경이력
일반
베스트
베오베
댓글
3120 2018-10-13 03:21:06 0
c++ 링크드리스트 질문좀 드려도 될까요? [새창]
2018/10/10 21:32:47

#include <set>
#include <algorithm>
#include <iostream>

using namespace std;

class MusicType
{
friend class Application;
public:
MusicType (const int id, const int genre, const string& music,
const string& artist, const string& album, const string& lyrics) {

m_id = id; m_genre = genre; m_music = music; m_artist = artist;
m_album = album; m_lyrics = lyrics;
}
MusicType (const MusicType& other) {
if (m_id != other.m_id && m_genre != other.m_genre &&
m_music != other.m_music && m_artist != other.m_artist &&
m_album != other.m_album && m_lyrics != other.m_lyrics) {
m_id = other.m_id; m_genre = other.m_genre;
m_music = other.m_music; m_artist = other.m_artist;
m_album = other.m_album; m_lyrics = other.m_lyrics;
}
}
const bool operator< (const MusicType& other) const {
return (m_id < other.m_id);
}
private:
int m_id, m_genre;
string m_music, m_artist, m_album, m_lyrics;
};

class GenreType
{
friend class Application;
public:
GenreType (const int id, const string& genre) {
m_id = id; m_genre = genre;
}
GenreType (const GenreType& other) {
if (m_id != other.m_id && m_genre != other.m_genre) {
m_id = other.m_id;
m_genre = other.m_genre; m_music = other.m_music;
}
}
const bool operator< (const GenreType& other) const {
return (m_id < other.m_id);
}
private:
int m_id;
string m_genre;
set<int> m_music;
};

class Application
{
public:
Application (void) {
m_genre.insert (GenreType(1, string("발라드")));
m_genre.insert (GenreType(2, string("힙합")));
m_genre.insert (GenreType(3, string("팝송")));
}
void insertMusic (const string& music, const string& artist, const string& album,
const string& genre, const string& lyrics) {
int genre_id;
auto genre_iter = find_if (m_genre.begin (), m_genre.end (),
[&](const auto& x)
{ return (x.m_genre == genre); });
if (genre_iter == m_genre.end ()) {
genre_id = (--genre_iter)->m_id + 1;
genre_iter = (m_genre.insert (GenreType(genre_id, genre))).first;
} else
genre_id = genre_iter->m_id;
auto music_iter = find_if (m_music.begin (), m_music.end (),
[&](const auto& x) { return ((x.m_genre == genre_id) &&
(x.m_music == music) &&
(x.m_artist == artist) &&
(x.m_album == album) &&
(x.m_lyrics == lyrics)); });
if (music_iter == m_music.end ()) {
int music_id = m_music.empty () ? 1 : (--music_iter)->m_id + 1;
m_music.insert (MusicType(music_id, genre_id, music, artist, album, lyrics));
const_cast<GenreType&>(*genre_iter).m_music.insert (music_id);
}
}
void eraseMusic (const int music_id) {
auto music_iter = find_if (m_music.begin (), m_music.end (),
[&](const auto& x) { return (x.m_id == music_id); });
if (music_iter != m_music.end ()) {
int genre_id = music_iter->m_genre;
auto genre_iter = find_if (m_genre.begin (), m_genre.end (),
[&](const auto& x) { return (x.m_id == genre_id); });
const_cast<GenreType&>(*genre_iter).m_music.erase (genre_iter->m_music.find (music_id));
if (genre_id > 3 && genre_iter->m_music.empty ())
m_genre.erase (genre_iter);
m_music.erase (music_iter);
}
}
void print (void) {
for (auto& music: m_music) {
auto genre_iter = find_if (m_genre.begin (), m_genre.end (),
[&](const auto& x)
{ return (x.m_id == music.m_genre); });
cout << "ID: " << music.m_id;
cout << " Music: " << music.m_music;
cout << " Artist: " << music.m_artist;
cout << " Album: " << music.m_album;
cout << " Genre: " << genre_iter->m_genre;
cout << " Lyrics: " << music.m_lyrics << endl;
for (auto id: genre_iter->m_music) {
auto music_iter = find_if (m_music.begin (), m_music.end (),
[&](const auto& x)
{ return (x.m_id == id); });
cout << " - " << id;
cout << " " << music_iter->m_music;
cout << " " << music_iter->m_artist;
cout << " " << music_iter->m_album << endl;
}
cout << endl;
}
}
private:
set<MusicType> m_music;
set<GenreType> m_genre;
};
3118 2018-10-12 23:07:33 0
소액민사를 진행하려 하는데 녹취록 작성대금을 청구할 수 있나요? [새창]
2018/10/12 22:47:30
"녹취록을 녹취전문 사무실에서 작성하고, 그 대금을 상대방에게 청구할 수 있는지가 궁금합니다" -- 판결 이후 신청할 수 있습니다. https://pro-se.scourt.go.kr/wsh/wsh300/WSH330.jsp
3117 2018-10-12 19:40:15 0
c++ 링크드리스트 질문좀 드려도 될까요? [새창]
2018/10/10 21:32:47
굳이 링크드리스트를 직접 구현해야하는 이유가 있나요? 저라면... STL의 set 같은 것을 쓸 것 같네요.
3116 2018-10-12 17:58:19 1
단어 뜻이 헷갈려서 질문합니다. [새창]
2018/10/12 16:08:30
단어의 뜻에 대한 문제가 아니라... 부사의 위치에 대한 문제인 듯 합니다. 말씀하신 두 문장은 뜻의 차이가 거의 없습니다.
3115 2018-10-12 14:45:35 5
저금통 샀다고 와잎한테 쳐맞은 남편... [새창]
2018/10/11 18:44:04
사연도 재미있네요. 출처를 타고 들어가서 원래 출처도 찾았어요! 감사합니다.
3114 2018-10-12 10:09:54 0
15,000 원 못받은걸로 고소가능합니까? [새창]
2018/10/12 05:09:37
경찰서가 아니라 법원에 소액사건재판을 신청할 수는 있을 것 같네요. 문제는... 본인은 법원에 재판 신청하러 가야되고 또 재판에도 나가야됩니다. 증거를 수집해야되고 재판에 비용도 듭니다. 상대방은 재판에 출석할 필요가 없습니다. 판사가 판결을 내려도 비용을 제하면 받을 수 있는 돈이 만 원이 안될 것입니다. 무의미한 재판이라고 각하되지 않는다면요. 또는, 재판을 신청하지 않고 지급명령을 신청하는 다른 방법도 있습니다. 소액사건재판보다는 조금 간결하겠죠. 원하신다면 시도해볼 수 있겠지만... 저라면 그 시간이 더 아까울것 같네요.

참고로... 이곳 법률게시판의 베오베(위쪽에 링크 있음) 글 중에 5만원으로 신용불량자를 만드는 글이 있기는 있습니다.
3113 2018-10-11 19:34:39 0
웃대가 오유 먹었다 야호 [새창]
2018/10/10 23:38:00


3112 2018-10-11 18:32:19 0
주택 전세끼고 판매 후 동사무소에 확정일자 필수일까요? [새창]
2018/10/11 17:27:43
본인 집 매도 후 다시 전세 계약 시 반드시 주의할 점 http://naver.me/FvhDDmrf
3111 2018-10-11 13:30:41 0
c++ 링크드리스트 질문좀 드려도 될까요? [새창]
2018/10/10 21:32:47
첫번째 아이템일땐 m_pCurPointer 가 NULL 일테고 m_pList 를 대입했을테니까요. 두번째는 m_pCurPointer 가 NULL 이 아니니까 m_pList->next 를 대입했는데 이것이 NULL 이라고 찍어봤어요.
3110 2018-10-11 02:33:24 0
그래도 자료셔틀 인식이 좋아진거 같음 [새창]
2018/10/08 06:52:49
감사합니다. 별이 세개도 되고 두개도 되고... 노란 별이 왼쪽에 있다가 오른쪽에 있기도 하고... :)
3108 2018-10-11 01:39:28 0
c++ 링크드리스트 질문좀 드려도 될까요? [새창]
2018/10/10 21:32:47
어디서 에러가 나는지 데이터 값을 찍어보세요. 자세한 코드 분석은 하지 않았지만...
GetNextItem() 을 보면 m_pCurPointer 가 NULL 일 때 m_pList 로 대입합니다. m_pList->next 가 NULL 값을 가지지 않는다는 보장이 있나요? 예를 들어 반드시 다른 과정에서 할당을 한다거나... 만일 그렇지 않다면 m_pCurPointer 가 NULL 이 아닐 때 m_pList->next 를 대입하면서 NULL 값을 가지게 되는 경우가 생기지 않을까요? 만일 m_pCurPointer 가 NULL 값을 가진다면 item = m_pCurPointer->data 에서 에러가 날 수 있을 것 같은데요...
< 이전페이지 다음페이지 >
< 11 12 13 14 15 >
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호