블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2797)
Unity3D (853)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (61)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

[링크] https://developer-talk.tistory.com/326

 

[C#]List 특정 값 존재하는지 체크하는 방법

이번 포스팅은 C#의 List에서 특정 값이 존재하는지 체크하는 방법을 소개합니다. 목차 Contains() 함수 Exists() 함수 FindIndex() 함수 데이터 형식이 객체인 List Contains() 함수 Contains() 함수 구문은 다..

developer-talk.tistory.com

 

반응형
Posted by blueasa
, |
List<cTag> week = new List<cTag>();
// add some stuff to the list
// now sort
week.Sort(delegate(cTag c1, cTag c2) { return c1.date.CompareTo(c2.age); });



참조 : http://stackoverflow.com/questions/3163922/sort-a-custom-class-listt

반응형
Posted by blueasa
, |

1. 개요

오브잭트 자원관리를 하다보면 오브잭트가 죽거나 더이상 어떤이유로 필요없어질 경우에 리스트에서 제거를 하려면 순회도중 죽었는지 검사해서 루프를 도는 도중 삭제를 해야한다.

 

2. 구현

it = list1.begin();
while(it != list1.end())
{
    if(*it == 죽었나?) list1.erase(it++);
    else ++it;	 	   
}
3.원리
원리는 먼저 it값이 erase()로 복사되어 넘어가고, 
it++가 실행되고, 마지막으로 erase()로 넘어간 복사된 it이 할 일을 마치고 무효화됨. 



[출처]
stl list 순회도중 삭제하기|작성자 도플광어
반응형
Posted by blueasa
, |

#include <iostream>
#include <list>
using namespace std;

 

template<typename T> 
class Stack
{
public:
 Stack() : m_bLIFO(true) { Clear(); }

 // 저장 방식을 설정한다.
 void SetLIFO( bool bLIFO ) { m_bLIFO = bLIFO; }

 // 초기화 한다.
 void Clear()
 {
  if( false == m_Datas.empty() )
   m_Datas.clear();
 }

 // 스택에 저장된 개수
 int Count() { return static_cast( m_Datas.size() ); }

 // 저장된 데이터가 없는가?
 bool IsEmpty() { return m_Datas.empty(); }


 // 데이터를 저장한다.
 void push( T data )
 {
  m_Datas.push_back( data ); 
 }

 // 스택에서 빼낸다.
 bool pop( T* data )
 {
  if( IsEmpty() )
  {
   return false;
  }


  if( m_bLIFO )
  {
   memcpy( data, &m_Datas.back(), sizeof(T) );
   m_Datas.pop_back();
  }
  else
  {
   memcpy( data, &m_Datas.front(), sizeof(T) );
   m_Datas.pop_front();
  }

  return true;
 }

private:
 list<T> m_Datas;
 bool  m_bLIFO; // true 이면 후입선출, false 이면 선입선출
};

 

void main()
{

 Stack<int> Int_Stack;

 Int_Stack.SetLIFO(true);

 Int_Stack.push(10);
 Int_Stack.push(20);
 Int_Stack.push(30);

 int Value = 0;
 Int_Stack.pop(&Value);
 //마지막에 넣은게 처음 나온다.
 cout << "Last In First Out pop : " << Value << endl <<  endl;
 
 //데이터 초기화
 Int_Stack.Clear();

 //FIFP로 설정
 Int_Stack.SetLIFO(false);

 Int_Stack.push(10);
 Int_Stack.push(20);
 Int_Stack.push(30);

 Int_Stack.pop(&Value);
 //처음에 넣은게 처음 나온다.
 cout << "First In First Out pop : " << Value << endl <<  endl;

}

 출처 : http://cafe.naver.com/jgcafe/694

반응형
Posted by blueasa
, |