C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[16750] Re:정말 감사드립니다... 이제 모든것이 해결이 되었군요... 근데..
김백일 [cedar] 1158 읽음    2002-03-25 15:10
민인학 님이 쓰신 글 :
: erase를 하고 erase한 다음의 vector부터 끌어당겨줘야 하나요?
: 안해줘도 잘 되던데요...

erase()를 해서 삭제를 하면,
ImportFilesInfo[2]가 빈 칸으로 남지 않고, 무조건 '자동으로' 끌어당겨집니다.

그렇게 되지 않게 하려면 그 위치에
비어있는(또는 비어있다는 표시를 한) import_file_info 객체를 대입하면 됩니다.

: 혹시 끌어당기지 않으면.. 무슨 문제의 소지를 살 이유라도 있나요?

문제점이라면 역시 제가 아래에 쓴대로
erase()의 비용이 높다는 것이죠. O(N)씩이나 걸리니까요.

: 김백일 님이 쓰신 글 :
: : 민인학 님이 쓰신 글 :
: : : 제목 그대로 인데요...
: : :
: : : struct port_info {
: : :         char *PortName;
: : :         int PortWidth;
: : :         int PortDir;
: : :         int PortType;
: : : };
: : :
: : :
: : : struct import_file_info {
: : :         char *EdifFile;
: : :         int InstanceID;
: : :         char *InstanceName;
: : :         char *InterfaceModule;
: : :         int CmdFifoSize;
: : :         int ReadFifoSize;
: : :         int WriteFifoSize;
: : :         int SlaveReadFifoSize;
: : :         int SlaveWriteFifoSize;
: : :         char *CLKPort;
: : :         char *CLKEdge;
: : :         int PortNo;  // 포트의 갯수
: : :         vector<port_info> PortInfo;  // 포트 정보
: : :         int ProtID;
: : :         int TransatorID;
: : : };
: : :
: : :
: : : vector<import_file_info> ImportFilesInfo;
: : : vector<import_file_info> ImportFilesInfoBackup;
: : :
: : : 예를 들어서...
: : :
: : : ImportFilesInfo의 내용을 ImportFilesInfoBackup로 복사할려면..
: : :
: : : ImportFilesInfoBackup = ImportFilesInfo;
: : : 하면 안되나요?
: : : 이렇게 하니 안되더라구요... 에러는 안나는데...
: :
: : 흠... ImportFilesInfo가 제대로 되어 있다면, 안 될리가 없을 텐데요.
: : 혹시
: : ImportFilesInfoBackup.assign(ImportFilesInfo.begin(), ImportFilesInfo.end());
: : 가 되는지 보세요.
: :
: : : 아참.. 그리고...
: : :
: : : 만약... ImportFilesInfo[2]를 삭제할려면...
: : : 어떻게 해야하죠? ^^
: :
: : ImportFileInfo.erase(ImportFilesInfo.begin() + 2);
: :
: : ImportFilesInfo[2] == *(ImportFilesInfo.begin() + 2)를 삭제한 후에,
: : ImportFilesInfo[3] == *(ImportFilesInfo.begin() + 3)부터
: : ImportFilesInfo[ImportFilesInfo.size() - 1] == *(ImportFilesInfo.end())까지를
: : 전부 다 한 '칸' 씩 앞으로 당겨 놓습니다.
: : (광란(?)의 복사가 일어나는 거죠.)
: : 그러므로 걸리는 시간은 O(N)이나 됩니다. -_-;;
: :
: : 만약 이런 삭제를 자주 해야 한다면, 절대 vector를 쓰지 마시고, list나 deque등을 쓰세요.
: :
: : : 고수님들의 답변 기다립니다.
: :
: :

+ -

관련 글 리스트
16737 [질문] vector간의 복사와 vector의 삭제는? 민인학 1446 2002/03/25
16745     Re:[질문] vector간의 복사와 vector의 삭제는? 김백일 2894 2002/03/25
16749         정말 감사드립니다... 이제 모든것이 해결이 되었군요... 근데.. 민인학 1213 2002/03/25
16750             Re:정말 감사드립니다... 이제 모든것이 해결이 되었군요... 근데.. 김백일 1158 2002/03/25
16754                 아.. 그렇군요... 답변에 감사드립니다. 민인학 1073 2002/03/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.