|
erase를 하고 erase한 다음의 vector부터 끌어당겨줘야 하나요?
안해줘도 잘 되던데요...
혹시 끌어당기지 않으면.. 무슨 문제의 소지를 살 이유라도 있나요?
김백일 님이 쓰신 글 :
: 민인학 님이 쓰신 글 :
: : 제목 그대로 인데요...
: :
: : 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등을 쓰세요.
:
: : 고수님들의 답변 기다립니다.
:
:
|