'Photobook' 카테고리의 다른 글

Windows7 Wallpaper 대한민국  (0) 2010.11.30
Windows7 Wallpaper Landscapes  (0) 2010.11.30
Windows7 Wallpaper 캐릭터  (0) 2010.11.30
Windows7 Wallpaper 조형물  (0) 2010.11.30
Windows7 Wallpaper 수채화  (0) 2010.11.30


// Server Socket

// NameSpace 선언
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace ServerSideSocket
{
    class ServerClass
    {
        public static Socket Server , Client;
       
        public static byte[] getByte = new byte[1024];
        public static byte[] setByte = new byte[1024];
       
        public const int sPort = 5000;
       
        [STAThread]
        static void Main(string[] args)
        {
            string stringbyte = null;
            IPAddress serverIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);
           
          try
          {           
            Server= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            Server.Bind(serverEndPoint);
            Server.Listen(10);

            Console.WriteLine("-----------------------------------------------------");
            Console.WriteLine(" 클라이언트의 연결을 기다립니다........ ");
            Console.WriteLine("-----------------------------------------------------");
                                   
            Client = Server.Accept();
   
            if(Client.Connected)
            {
                while(true)
                {
                    Client.Receive(getByte,0,getByte.Length,SocketFlags.None);
                    stringbyte = Encoding.UTF7.GetString(getByte);

                    if (stringbyte != String.Empty)
                    {
                      int getValueLength = 0;
                      getValueLength = byteArrayDefrag(getByte);
                      stringbyte = Encoding.UTF7.GetString(getByte,0,getValueLength+1);
                      Console.WriteLine("수신데이터:{0} | 길이:{1}",stringbyte,getValueLength+1);
                      setByte = Encoding.UTF7.GetBytes(stringbyte);
                      Client.Send(setByte,0,setByte.Length,SocketFlags.None);
                    }
                   
                    getByte = new byte[1024];
                    setByte = new byte[1024];
                }
            }
          }
          catch(System.Net.Sockets.SocketException socketEx)
          {
            Console.WriteLine("[Error]:{0}", socketEx.Message);
          }
          catch(System.Exception commonEx)
          {
            Console.WriteLine("[Error]:{0}", commonEx.Message);
          }
          finally
          {
            Server.Close();
            Client.Close();
          }
        }
       
        public static int byteArrayDefrag(byte[] sData)
        {
          int endLength = 0;
         
          for(int i = 0; i < sData.Length; i++)
          {
            if((byte)sData[i] != (byte)0)
            {
              endLength = i;
            }
          }
         
          return endLength;
        }
    }
}


// Client Socket

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace ClientSideSocket
{
    class ClientClass
    {
        public static Socket socket;
        public static byte[] getbyte = new byte[1024];
        public static byte[] setbyte = new byte[1024];

        public const int sPort = 5000;

        [STAThread]
        static void Main(string[] args)
        {
            string sendstring = null;
            string getstring = null;

            IPAddress serverIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint serverEndPoint = new IPEndPoint(serverIP,sPort);

            socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            Console.WriteLine("-----------------------------------------------------");
            Console.WriteLine(" 서버로 접속을 시작합니다. [엔터를 입력하세요] ");
            Console.WriteLine("-----------------------------------------------------");
            Console.ReadLine();

            socket.Connect(serverEndPoint);

            if (socket.Connected)
            {
                Console.WriteLine(">> 정상적으로 연결 되었습니다.(전송한 데이터를 입력해주세요)");
            }

            while(true)
            {
                Console.Write(">>");
                sendstring = Console.ReadLine();
               
                if(sendstring != String.Empty)
                {
                  int getValueLength = 0;
                  setbyte = Encoding.UTF7.GetBytes(sendstring);
                  socket.Send(setbyte,0,setbyte.Length,SocketFlags.None);
                  Console.WriteLine("송신 데이터 : {0} | 길이{1}", sendstring, setbyte.Length);
                  socket.Receive(getbyte,0,getbyte.Length,SocketFlags.None);
                  getValueLength = byteArrayDefrag(getbyte);
                  getstring = Encoding.UTF7.GetString(getbyte,0,getValueLength+1);
                  Console.WriteLine(">>수신된 데이터 :{0} | 길이{1}" , getstring , getValueLength+1);
                }
               
                getbyte = new byte[1024];
             }
        }
       
        public static int byteArrayDefrag(byte[] sData)
        {
          int endLength = 0;
         
          for(int i = 0; i < sData.Length; i++)
          {
            if((byte)sData[i] != (byte)0)
            {
              endLength = i;
            }
          }
         
          return endLength;
        }
    }
}

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace Thread_Test
{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void button_start_Click(object sender, EventArgs e)
        {
            Thread T1 = new Thread(M1);
            Thread T2 = new Thread(M2);

            CheckForIllegalCrossThreadCalls = false; //크로스쓰레드 체크 옵션을 꺼주거나

            T1.Start();
            T2.Start();
        }

        private void M1()
        {
            for (int i = 0; i < 10000; i++)
                listBox_output.Items.Add("Thread1");
                //this.Invoke(new MethodInvoker(delegate { this.listBox_output.Items.Add("Thread1"); })); 이 방법처럼 invoke를 이용한다
        }

        private void M2()
        {
            for (int i = 0; i < 10000; i++)
                listBox_output.Items.Add("Thread2");
                //this.Invoke(new MethodInvoker(delegate { this.listBox_output.Items.Add("Thread2"); }));
        }
    }
}

크로스쓰레트 체크 옵션을 false로 변경할 경우 컨트롤들의 동작이 Visual Studio 2003의 동작방식과 동일해진다고 하는데 세세한 내용은 모르겠음

메인폼(메인쓰레드)에서 생성한 컨트롤들을 다른 신규 쓰레드들에서 접근하려 하면 크로스쓰레드 발생

새로운 규칙에 맞게 가능하면 컨트롤들은 get(), set()등을 이용하여 별도로 접근(음... 뭔가 더욱 객체지향적으로 가겠다는건가...)하는것이 좋겠다



파일을 선택해서 원하는 위치에 복사하는 프로그램

fileCopyDlg.cpp

void CFilecopyDlg::OnFrom()
{
 // TODO: Add your control notification handler code here
 m_ctrlListBox.ResetContent();
 char szFilter[] = "All Files(*.*)|*.*||";
 
 CFileDialog dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, szFilter);
 if(IDOK == dlg.DoModal())
  for(POSITION pos = dlg.GetStartPosition(); pos!=NULL;)
   m_ctrlListBox.AddString(dlg.GetNextPathName(pos));
}

void CFilecopyDlg::OnTo()
{
 // TODO: Add your control notification handler code here
 ITEMIDLIST *pidlBrowse;
 char pszPathname[MAX_PATH];

 BROWSEINFO BrInfo;
 BrInfo.hwndOwner = GetSafeHwnd();
 BrInfo.pidlRoot = NULL;
 
 memset(&BrInfo, 0, sizeof(BrInfo));
 BrInfo.pszDisplayName = pszPathname;
 BrInfo.lpszTitle = "복사할 폴더를 선택하시오";
 BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;

 //대화상자 띄우기
 pidlBrowse = ::SHBrowseForFolder(&BrInfo);

 if(pidlBrowse != NULL)
 {
  //Path를 얻어옴
  SHGetPathFromIDList(pidlBrowse, pszPathname);
  m_strDest = pszPathname;
  UpdateData(FALSE);
 }
 
}

void CFilecopyDlg::OnStartCopy()
{
 // TODO: Add your control notification handler code here
 UpdateData();

 SHFILEOPSTRUCT *pF0 = new SHFILEOPSTRUCT;
 pF0->hwnd = NULL;
 pF0->wFunc = FO_COPY;
 pF0->fFlags = FOF_NOCONFIRMMKDIR;
 pF0->fAnyOperationsAborted = TRUE;
 pF0->lpszProgressTitle = _T("파일 복사중");

 CMemFile file;
 CArchive ar(&file, CArchive::store);

 CString str;
 int nCount = m_ctrlListBox.GetCount();
 char null = 0;
 for(int i=0;i<nCount;i++)
 {
  m_ctrlListBox.GetText(i, str);
  ar.WriteString(str);
  ar.Write(&null, 1);
 }
 ar.Write(&null, 1);
 ar.Close();

 pF0->pFrom = (char *)file.Detach();
 
 //복사될 디렉토리명(Destination)
 pF0->pTo = new char[m_strDest.GetLength()+1];
 strcpy((LPSTR)pF0->pTo, (LPSTR)(LPCTSTR)m_strDest);
 ((LPSTR)pF0->pTo)[m_strDest.GetLength()]=0;

 AfxBeginThread(ThreadFunc, pF0);
}

UINT ThreadFunc(LPVOID pParam)
{
 SHFILEOPSTRUCT *pF0 = (SHFILEOPSTRUCT *)pParam;
 ::SHFileOperation(pF0);

 delete [] (char *)pF0->pFrom;
 delete [] (char *)pF0->pTo;
 delete pF0;

 return 0;
}


fileCopyDlg.h

class CFileCopyDlg : public Cdialog
외부에

UINT ThreadFunc(LPVOID pParam);
를 선언해줌




오리? 꽥꽥 ㅋㅋ



손이 참 작으셨습니다...
저 작은 두 손으로 너무 많은 일들을 해내셨습니다
고맙고 또 감사합니다



오옷 +_+ 전기자전거다!!



운치 있어 보이는 작은 탁자와 대장님의 고뇌들...



젊었을때 한 인물 하셨군요!! ㅋㅋ



그렇습니다 전 후원회원입니다
스티커 상하지 말라고 부득불 안쪽에 붙였습니다~



흑 ㅠㅠ 365km 5시간 4분 네비야 진짜니? ㅠㅠ 집에 언제가지? ㅠㅠ
그래도 올때 갈때 번번히 날씨가 좋으니 혹시 우리 대장님이 나 온다고 날씨 맑게 해주시나? +_+ ㅋㅋㅋㅋ



어두운 터널이 보이고...



들어가면 어둡고 조명에 의지해야 하고...



곧 다시 나와지는건데...
왜 이렇게 어두운 터널이 길까요?
저런 밝은 터널도 아닌...
앞을 비추고 밝고 바른길로 가려하니 라이트 켜는것도 불법이라면서 국민들을 괴롭히네요
어두컴컴한 곳에서 나쁜짓 하는거 들통날까봐...
너무 답답합니다 이 터널... 언제 끝나는건지...



서울 다와서 경부고속도로 끝에서 너무 밀려 ㅠㅠ 아픈 다리접고 벨트 쥐어 뜯으며 괴로워하고 있는 모습입니다 ㅎㅎ;; ㅠㅠ;;



포토샵의 도움을 받아 파노라마 사진을 한번 만들어봤습니다~ 혹시 쓸데가 있으시다면 마음껏 퍼가셔도 됩니다



긴 말을 하고 싶지는 않았습니다
이번엔 방명록도, 포스트잇도 쓰지 않았습니다
이상하게 긴 말이 하고 싶지는 않습니다
그냥 이 아프고 저린 마음이면 충분할것 같습니다

뜨겁던 여름 마포에 있는 노무현재단에 직접 방문을 해보았습니다
사무실은 작지만 잘 꾸며져 있었습니다
주차도 어렵고 여러 여건들이 녹록치 않은 가운데서도 여러분께서 업무를 보고 계셨습니다
그 중간 누군지도 모르는 예약도 없었던 낮선 방문자에게 친절을 베풀어 주셔서 감사드리며
앞으로도 꾸준한 노력 부탁드리겠습니다
작게라도 보탬이 되겠습니다

고맙습니다

이기호 드림 

'Travel > 봉하마을 방문기' 카테고리의 다른 글

봉하마을 평일 밤 풍경  (0) 2017.02.09
봉하마을 방문기 3편  (0) 2010.11.17
봉하마을 방문기 2편  (0) 2010.11.17
봉하마을 방문기 1편  (0) 2010.11.17


이곳은 말씀 안드려도 다들 아시지요?...
깊은 한숨이 나옵니다



안전을 위해 촘촘히 막아두셨습니다



그 분이 가신곳에 국화 한송이가 시든 채 꽂혀 있었습니다
시들어서 뺄까 했는데
그 분이 가신곳에서 국화가 함께 고개 숙인것 같아 그냥 두었습니다



죄송합니다
저 안전장치를 넘어갔습니다
얼마나 두려우셨을지 직접 보고 싶었고
그 분께서 마지막으로 보셨던 풍경을 저 또한 보고 싶었습니다
다시 한 번 죄송합니다



내려다 보았습니다
대장님의 묘억과 사저등이 잘 보입니다
하지만 앞으로 툭 튀어 나온 바위들... 쓸데없다고 해야할까요?
너무 많은 의구심들이 머릿속을 맴돌았습니다...



뒤를 돌아다 보았습니다...
아픕니다 저 울타리를 보니...
너무 아픕니다...



공기도 좋고 대장님게서 왜 여길 즐겨 오르셨는지 알겠습니다
마음은 한없이 무거워져만 갑니다...



봉화사 주변에서 만난 닭들입니다~
"엄마 저거 닭! 통닭!! 맛있겠다!!" 하면서 뛰어가던 한 꼬마가 생각나네요;;;
아하하하하하하;;;;;;;;



그... 그놈 참 실하게 생겼다;;; 저도 이런 생각을 할뻔했습니다;;;;; 아하하하하;;;;



전부 이렇게 계단을 만들어 놓으셨더군요
전 개인적으로 산길이 좋습니다만
노약자분들이 편안히 찾아오실 수 있도록 한 배려 감사합니다



무늬만 망원렌즈로 대장님 묘역을 한번 찍어봤습니다



작년에 비해 한결 보기 좋아진 모습입니다



우리 대장님 그림도 저기로 이사를 갔네요~
작년엔 주차장 옆쪽에 있었는데 ㅎ



다 읽어보지는 못했지만 찍어온 사진으로 다시 한번 보려 합니다
어떠한 이야기들인지 궁금하네요~



삐뚤게 나와 포토샵으로 수정을 좀 하려 했는데 급하게 올리고픈 맘에 그냥 올리게 되었네요
우리의 마음이 더욱 꽉 박히도록 꾹꾹 눌러주면서 걸어가시던 한 부부셨습니다
다리 모델 감사합니다
우리도 대장님을 향해 걸어갑니다
한발 한발 우리 꿈들이 더욱 깊이 박히도록 꾹꾹 눌러주면서요...



우리 대장님 추모의 집입니다
호화스럽지도 않고 깔끔해보이네요



힘드셨죠?



우리가 촛불을 밝혀 대장님께 갑니다



우리의 뜻이 모여 대장님의 의지를 대장님의 형상으로 만들어갑니다



대장님께서 쓰시던 소소한 물건들이 전시되어 있네요
그립습니다...

4편 에서 계속 할께요...

'Travel > 봉하마을 방문기' 카테고리의 다른 글

봉하마을 평일 밤 풍경  (0) 2017.02.09
봉하마을 방문기 4편  (3) 2010.11.17
봉하마을 방문기 2편  (0) 2010.11.17
봉하마을 방문기 1편  (0) 2010.11.17

네... 어디서 犬들이 짖는 소리가 들리네요



이런 자료가 나와야 하나요? 직접 한번만 봐도 이런 자료 자체가 필요 없어보입니다
그저 어이가 없을 다름입니다...


이런것도 생겼더군요~ 새로 생긴 건물들이 많아 좋았습니다
단순한 관광지가 아닌 대장님의 의미를 되새길 수 있는 장소가 되었으면 합니다
그냥 와서 김밥만 까먹고 가도 좋아라 하실 대장님이시긴 하지만요 ㅎㅎ;;


단풍이 참 예쁘게 들었네요



담배 안되요!!



우체통도 이사를 했더군요~



드디어 그렇게도 뵙고 싶었던 대장님의 묘역입니다
너무 늦었죠? ㅜㅜ 너무 와보고 싶었는데 이제서야 왔어요



대장님 추모의 집! 있다가 사진 많이 나와요~



잘 꾸며 놓으셨더라구요~ 공사, 디자인, 재단, 그리고 우리 국민여러분 좋은 묘역 만들어 주셔서 감사합니다!



네 조심하겠습니다~



우리의 박석들은 대장님의 바위와 동일한 높이에만 박혀있었습니다
높거나 낮은곳엔 단 하나도 없더군요
그 마음 참 고맙습니다
항상 국민들과 같은 높이에 계시고 싶어하셨던 대장님의 뜻 그대로 담아주셔서 다시 한번 참 감사합니다



우리들의 마음이 바닥을 촘촘히 메꾸고 있었습니다



저의 박석입니다
대장님 곁에 남아 그 뜻 그 의미 잊지 않고 살아가려 합니다



저의 박석도 다른 분들의 박석도 조심스레 꾹꾹 밟았습니다
더 튼튼히 더 깊이 박혀 대장님과 오래오래 함께하라구요



우리 대장님 잘 보이네요~^^



작년 크리스마스땐 공사중이라서 가까이 올 수 없었습니다
고맙습니다 깨끗하게 잘 만들어주셔서
어떻게 국민들의 정성으로 만들어진 이런 묘역에 그런짓을... 다시 한 번 울화가 치밉니다...

문재인 이사장님 물론 저희 모두가 지켜야 하겠지만 저희를 대신하여 관리를 책임져 주시는 주체로써 다시는 이런일이 발생하지 않도록 철저한 관리 및 사후처리를 부탁드립니다
후원회원으로써 대통령님의 뜻을 기리는 한 사람의 국민이자 노무현재단의 수 많은 주인 중 한 사람으로써 간곡히 부탁드립니다



대장님... 전 대장님을 내려다 보고 싶지 않습니다
아무리 올려다 보려고 해도 카메라를 바닥에 내려놓고 찍어도 도무지 올려다 볼 수 가 없네요
속상합니다 대장님...ㅜㅜ



대장님 바위에 체온이라도 전달해드리고 싶었는데
그렇게 막 들어가면 안되는거니까요 바로 앞에서 바라볼 수 있다는 사실만으로 만족하려 합니다



안길수님 저 또한 동의합니다
무척 인상 깊었습니다



고맙습니다



에구... 에구... 에구...
굵은 글씨만큼 마음에 깊은 상처가 남으신거죠?
복잡한 심경으로 님의 마음 읽고 갑니다 고맙습니다



사진을 잘 못찍어서 ㅎㅎ
실제로 보면 제법 운치 있어보이네요~


3편 에서 계속 할께요...

'Travel > 봉하마을 방문기' 카테고리의 다른 글

봉하마을 평일 밤 풍경  (0) 2017.02.09
봉하마을 방문기 4편  (3) 2010.11.17
봉하마을 방문기 3편  (0) 2010.11.17
봉하마을 방문기 1편  (0) 2010.11.17
방문기를 쓰기에 앞서 있을 수 없는일이 봉하에서 일어났네요
너무 마음이 아파 언급조차 하고 싶지 않을 지경입니다...
정말 거칠게 욕을 하고 싶지만 하지 않겠습니다
대신 마음속에 다시 한 번 깊이 새기겠습니다...
지금의 분노는 다스릴 필요가 있을것 같네요

2010년 11월 12일 금요일
회사를 마치고 작년 크리스마스 방문 이후 미루고 미루던 봉하마을 방문을 감행하였습니다

저녁도 챙겨먹고 조금 차가 한산해질 시간인 오후 9시에 영등포 집에서 출발
5시간여를 달려 새벽 1시 40분경 창원의 숙소에 도착하였습니다
우리 대장님의 묘역까지 5km도 남지 않은 가까운 곳이었습니다
간만의 방문에 마음도 설레였고 아침이 기다려졌습니다

특실밖에 없다고 해서 특실을 잡았는데 마사지가 가능한 욕조도 있더군요 따뜻하게 피로 잘 풀었습니다~



드디어 아침이 밝고 대장님을 뵈러가기 위해 출발!



오홍 소방서가 보이네요 ㅋ



네비야 진짜 4km도 안남은거 맞지??



드디어 대장님 생가 표지판이 보입니다~



혹시 했는데 역시나 앞에가는 자주색 버스도 봉하마을행이더군요~



이 길을 지날때면 검은색 옷을 입고 줄을 서 있던 우리 국민들의 모습이 아른거립니다...



오잉 저건 뭐지? 봉하둥지휴게소? 새로 생겼나??



오우 제대로된 안내도군요!



어김없이 국수먹으러 바로 뛰어들어간 대장님의 마실장소?ㅋ



안타깝게도 국수맛이 변했네요...
우리 대장님 계실때 계셨던 아주머니도 안계시고 다른분들이 계셨습니다
면도, 국물도 맛이 예전만 못하네요 많이 안타까웠습니다
양은 엄청나다는거! 한그릇 시키셔서 둘이 먹어도 충분합니다;;



커맨드 센터도 전시관? 같은걸로 변해있었네요
많이 변했습니다~



두 분 십자수 속에 들어가보았습니다 보이시나요 검은그림자 ㅎㅎ;;;



청주시청 앞이네요 전 청주가 고향입니다 가본지도 오래되었네요~



우리 대장님을 그저 감정에 치우쳐서 좋아하는게 아닙니다
참여정부 시절 어떻게 하면 이렇게 할 수 있나 싶을 정도로 올라야 할 지표들은 꾸준히 또 많이 올랐고
떨어져야 할 지표들도 꾸준히 또 많이 떨어졌습니다
그 시끄러운 상황 속에서 정말 대단하셨습니다 정말 5년만 더 나라를 이끄셨어도 지금의 대한민국은 아주 많이 발전했을거라 믿어 의심치 않습니다

진심으로 총명하고 그 지식의 깊이 또한 깜짝 놀랄만큼 깊고 넓으셨습니다
정치, 경제, 군사, 사회, 복지, 심리, 협상, 역사등 너무 넓고 깊은 지식 때문에 오히려 더 복잡하시지 않으셨을까 싶을 정도입니다
정말 많은 책들을 읽으면서도 이런적이 없었는데 대장님의 고뇌를 정확히 파악하기 위해서는 각종 분야의 전문서적을 추가로 뒤적거리고 또 거기에서 꼬리에 꼬리를 무는 정말이지... 탄복할 수 밖에 없더군요

대단한 지식은 아니지만 저 또한 다른 분야를 전문적으로 연구하는 사람 중 하나로써 대장님의 총명함과 판단력 그리고 넓은 지식에 진심으로 존경의 말씀을 드립니다



대장님 외롭지 않으시죠? ^-^



강물은 바다를 포기하지 않습니다
강물처럼! 그 포기하지 않는 강물이 아름다운 강들이... 처참이 짓밟히고 있습니다
어찌해야 하는걸까요? 아무리 목소리를 내고 난리를 쳐도 들은척도 안합니다...
그저 바라만 보고 있기에는 너무 심하게 망가져갑니다...
지켜보고 계신가요? 도와달라고 옷자락이라고 붙잡아보고 싶습니다 대장님 ㅜㅜ



저 왔어요 ㅠㅠ 1년만에 왔네요



십자수 실물 처음 보았는데
정말 엄청난 정성이셨습니다 감사합니다


2편에서 계속 할께요...

'Travel > 봉하마을 방문기' 카테고리의 다른 글

봉하마을 평일 밤 풍경  (0) 2017.02.09
봉하마을 방문기 4편  (3) 2010.11.17
봉하마을 방문기 3편  (0) 2010.11.17
봉하마을 방문기 2편  (0) 2010.11.17

///////////////////////////////////////////////////////////////////////////////
//STL( list )
//이중 링크드 리스트처럼 임의의 위치에 삽입과 삭제가 빠름
//임의의 위치에 엑세스 할 수 없으며, 순차적으로 엑세스 하여 검색할 수 있다.
//순차 컨테이너
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <list>

 

using namespace std;

 

void main()
{
    list<int> List;
    list<int>::iterator it;

 

    List.push_back(10);
    List.push_back(9);
    List.push_back(8);
    List.push_back(7);
    List.push_back(6);

 

    cout << "List크기" << List.size() << endl;

 

    for( it = List.begin(); it != List.end(); it++ )

    {
        cout << *it << endl;
    }

 

    List.push_front(11);
    List.push_front(12);

 

    cout << "List크기" << List.size() << endl;

 

    for( it = List.begin(); it != List.end(); it++ )

    {
        cout << *it << endl;
    }
}

 

 

 

///////////////////////////////////////////////////////////////////////////////
//STL( list )
//list를 이용하여 링크드 리스트 구현하기.
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <list>
#include <algorithm>

 

using namespace std;

enum { INPUT = 1, DELETE, OUTPUT, EXIT };

 

void main()
{
    int select;
    int val;

 

    list<int> list1;
    list<int>::iterator it;

 

    while(1)

    {
        cout << "선택하세요( [1]:입력, [2]:삭제, [3]:출력, [4]:나가기 ) : ";
        cin >> select;

 

        switch( select )

        {
        case INPUT:
            cout << "입력할 값을 입력하세요 : ";
            cin >> val;

 

            list1.push_back(val);

 

            break;

 

        case DELETE:
            cout << "삭제할 값을 입력하세요 : ";
            cin >> val;

 

            it = find( list1.begin(), list1.end(), val ); //입력한 값을 찾아서 이터레이터를 리턴.

            list1.erase(it);

 

            break;

 

        case OUTPUT:
            for( it = list1.begin(); it != list1.end(); it++ )

            {
                 cout << *it << endl;
            }    

 

            break;

 

        case EXIT:
            cout << "Bye~" << endl;

 

            return;

        }
    }
}

 

 

 

///////////////////////////////////////////////////////////////////////////////
//STL( list )
//구조체 변수를 사용하기.
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <list>

 

using namespace std;

 

typedef struct tag_Number {
    char name[10];
    int num;
}NUMBER;

 

NUMBER *pNum = NULL;


list<NUMBER*> list1;
list<NUMBER*>::iterator it;

 

void Input();
void Output();

 

void main()
{
    Input();
    Output();
    delete pNum;
}

 

void Input()
{
    int sel;

 

    while(1)
    {
        cout << "[1] : 입력, [5] : 나가기";
        cin >> sel;

 

        if( sel == 5 ) break;

        else if( sel == 1 )

        {
            pNum = new NUMBER;

            cout << "이름을 입력하세요 : ";
            cin >> pNum->name;

            cout << "전화번호를 입력하세요 : ";
            cin >> pNum->num;

 

            list1.push_back( pNum );   //리스트가 동적으로 할당하는 pNum을 가지고 있는다.
                                                  //구조체를 가지게 하지말고 주소값을 가지게 할것.
        }
    }
}

 

void Output()
{
    for( it = list1.begin(); it != list1.end(); it++ )

    {
        cout << (*it)->name << endl;
        cout << (*it)->num << endl;
    }
}


///////////////////////////////////////////////////////////////////////////////
//STL( map )
//map의 index에 의해서 정렬되어 값이 출력됨.
//index키값을 이용해 신속하게 값을 찾을 수 있다.
//중복된 index를 허용하지 않는다.
//정력컨테이너 : 키값을 이용해서 데이터를 신속하게 찾을 수 있다.
///////////////////////////////////////////////////////////////////////////////

#include <iostream>
#include <map>

 

using namespace std;

 

void main()
{
    map<int, char*> map1;
    map<int, char*>::iterator it;

    map1[3] = "yi";
    map1[2] = "ki";
    map1[1] = "ho";

 

    for( it = map1.begin(); it != map1.end(); it++ )

    {
        cout << it->first << it->second << endl;
    }

 

    map1[1] = "wow";
    map1[3] = "hi";

 

    for( it = map1.begin(); it != map1.end(); it++ )

    {
        cout << it->first << it->second << endl;
    }

 

    map1.erase(3);  //index키값을 이용해 쉽게 자료를 삭제할 수도 있다.

   

    for( it = map1.begin(); it != map1.end(); it++ )

    {
        cout << it->first << it->second << endl;
    }
}


+ Recent posts