|
민인학 님이 쓰신 글 :
: 제목 그대로 인데요...
:
: 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등을 쓰세요.
: 고수님들의 답변 기다립니다.
|