|
안녕하세요 만해입니다.
헐 STL 쩝`
쓰는 사람에 따라 좋은 막강 툴이 될수도 있고,
아주 안좋은 버그 메이커가 될수 있는거죠
상투적으로 애기 하자면 잘 쓰면 좋아요 ㅋㅋ
제가 이전에 만든 outstream << 오버 로딩한 소스 보여 드릴께요 참고 하세요
ostream &operator<<(ostream &os,Matrix &d)
{
int Row = d.GetRow();
int Col = d.GetCol();
for(int i = 0; i < Row; i++)
{
for(int j = 0; j < Col; j++)
if ( j != (Col-1) )
os << d.element(i,j) << ":";
else
os << d.element(i,j);
os << endl;
}
return os;
}
김백일님의 글을 참고해보시고요
STL 관련 공부 해보세요 저도 지금 공부 중이랍니다.(책 사놓고 탑 쌓기 공부중 ㅋㅋㅋ 좀 봐야 하는데)
그럼 즐프 하세요~
김상면 님이 쓰신 글 :
: STL 은 싫어요 옛날에 사용해 봤는데 그때는 아예 컴퓨터가 먹통이 되버렸어요. 그때는 아무도 안가르쳐주고 그랬어요.
: 태선님 미워잉!!!!!! 또 내프로그램 먹통되게 할라고 그래잉..미워 미워 미워.....
: 그럼
:
: 김태선 님이 쓰신 글 :
: : VC 코드인데 여기다 질문을 하셨네요.
: : 시간이 없어 코드를 검증해 볼 여유는 없고,
: : 대신 한 말씀 참고로 드리면,
: : STL을 쓰시는게 나중을 위해서 좋을 것 같습니다.
: :
: :
: : 김상면 님이 쓰신 글 :
: : : #include "stdafx.h"
: : : #include <iostream.h>
: : : #include <malloc.h>
: : :
: : : template <class Type>
: : : class CList
: : : { typedef struct tagNode
: : : { struct tagNode* m_pNext;
: : : Type* m_pData;
: : : } Node;
: : :
: : : Node* m_pHead;
: : : public:
: : : CList()
: : : { m_pHead = NULL;
: : : }
: : : ~CList()
: : : { Node* pre;
: : :
: : : while(m_pHead)
: : : { pre = m_pHead;
: : : m_pHead = m_pHead->m_pNext;
: : : free(pre);
: : : }
: : : }
: : : bool Insert(Type& tp);
: : : bool Delete(Type& tp);
: : : void Print();
: : : };
: : :
: : : template <class Type>
: : : bool CList<Type>::Insert(Type& tp)
: : : { Node* node = (Node*)malloc(sizeof(Node));
: : :
: : : if (node)
: : : { node->m_pNext = m_pHead;
: : : node->m_pData = &tp;
: : : m_pHead = node;
: : : return true;
: : : }
: : : return false;
: : : }
: : :
: : : template <class Type>
: : : bool CList<Type>::Delete(Type& tp)
: : : { Node* node = m_pHead;
: : : Node* pre;
: : :
: : : while(node)
: : : { if (*node->m_pData == tp)
: : : { if (node == m_pHead)
: : : m_pHead = node->m_pNext;
: : : else
: : : pre->m_pNext = node->m_pNext;
: : : free(node);
: : : return true;
: : : }
: : : pre = node;
: : : node = node->m_pNext;
: : : }
: : :
: : : return false;
: : : }
: : :
: : : template <class Type>
: : : void CList<Type>::Print()
: : : { Node* node = m_pHead;
: : :
: : : while(node)
: : : { cout << *node->m_pData << endl; //요부분요
: : : node = node->m_pNext;
: : : }
: : : }
: : :
: : : int main(int argc, char* argv[])
: : : { CList<int> list;
: : : int d1(1),d2(2),d3(3),d4(4);
: : :
: : : list.Insert(d1);
: : : list.Insert(d2);
: : : list.Insert(d3);
: : : list.Print();
: : : cout << "==============================" << endl;
: : :
: : : list.Delete(d1);
: : : list.Delete(d2);
: : : list.Delete(d3);
: : : list.Print();
: : :
: : : return 0;
: : : }
: : :
: : : 위와 같이 template을 이용해서 프로그램을 만들었습니다. 근대 멤버함수 Print에서 m_pData가 기본 자료형일때는 잘 동작하는데 객체(클래스)일때는 처리가 곤란합니다. 객체는 '객체.멤버' 형식으로 읽어 와야 하쟎아요 근대 기본 자료형은 다이렉트로 바로 읽어 오니 서로간에 마찰이 생깁니다. 이경우 고수님들은 어케 처리하나요?
: : :
: : : 그라고 이건 왜또 작동을 안하나요
: : : list.Insert(1);
: : : list.Insert(2);
: : : list.Insert(3);
: : : 인수로 변수가 아니라 상수를 대입하니 에러가 납니다. 정말 환장합니다. C은 너져분해도 이런 문제는 없는데..... 고수님들이 이번에 안가르쳐주면 정말로 C++버려뿔까 보당 말만 객체 지향이지 배워서 써먹으려면 꼭 저런씩으로 사람 속을 팍 팍 뒤집어 버리네..... 교수들은 뭐하나 몰라 돈만 받아 먹고 저런것도 안가르쳐주고..... 아이참 신경질나..... 이건 베이직보다 더하다 더해.....
: : :
: : : 그럼
|