배열의중간에있는 한요소를 제거하고싶을때
글쓴이: jjjjrr / 작성시간: 금, 2005/02/11 - 11:11오전
안녕하세요
WSAEVENT m_EventArray[60];
위와같은배열이 있을때
중간에있는 한요소를 제거하고싶을때 어떻게하는지 부탁합니다
그러니까
위배열에서 인덱스가 25 인요소를 제거하고싶읍니다
인덱스가 25인요소를 지우고 인덱스가 26 이 25자리로 27이 26자리로
한칸식 당겨오게만들어야됩니다
특정인덱스를제거한다는것이 제거하고 제거된자리를 그 이후에있는 요소들이
한칸식 당겨와야됩니다
memcpy, CopyMemory.....
이런함수이용하면된다는데 잘모르겠읍니다
조언부탁드립니다
새해복많이들 받으세요
Forums:
저번에 보니 구조체도 그냥 = 가 된다더군요. (그런줄도 모르고 매번 클
저번에 보니 구조체도 그냥 = 가 된다더군요. (그런줄도 모르고 매번 클래스를 부러워했는데 ㅠㅠ)
순서가 중요한게 아니라면 하나씩 당길 필요 없이, 제일 마지막걸 지울 위치에 복사하고, 마지막것만 없애면 되겠죠?
[code:1] memcpy(&m_EventArray
배열 25번 자리가 빠지게 만들었습니다.
마지막 것은 0으로 메모리를 초기화했습니다.
[quote="SoftOn"][code:1] memcpy(&
원본 영역과 복사될 영역이 겹칠 때는 memcpy를 쓰면 안되고 memmove를
써야 합니다.
[quote="촙5"]순서가 중요한게 아니라면 하나씩 당길 필요
순서가 상관 없다면
가장 빠르겠군요 ^^
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
array element 하나를 제거하기 위해 모든 배열의 값을 이동시키
array element 하나를 제거하기 위해 모든 배열의 값을 이동시키는 것은 별로 좋은 방법이 아닙니다. 배열이 커질 수록 시간만 많이 잡아먹기 때문이죠. 물론 항상 깔끔하게 해결하기는 힘듭니다만, 첫째 대개의 경우 특정 값을 magic value로 설정하고 (예를 들어 -1) 이 magic value가 발견되면, 이 element는 빈 것으로 처리한다거나, 둘째, 따로 index array를 두어 indirect indexing을 한다거나, 세째, insert/delete가 자주 일어난다면 array 대신 linked list를 써서 해결하는 방법도 있습니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기