我想將結構從一個向量複製到mfc中的另一個向量。如何在Vector中使用複製功能?
我的矢量結構
typedef vector<CLog *> CLogData;
typedef vector<CLog * > tLogData;
如何將TYPE堵塞*從CLogData複製到tLogData?
問候,
KARTHIK
我想將結構從一個向量複製到mfc中的另一個向量。如何在Vector中使用複製功能?
我的矢量結構
typedef vector<CLog *> CLogData;
typedef vector<CLog * > tLogData;
如何將TYPE堵塞*從CLogData複製到tLogData?
問候,
KARTHIK
如果你想CLog*
指針的淺拷貝,使用MacGucky給出了答案。如果您需要CLog*
指針指向實際數據的深層副本,你需要手動做一個循環:
CLogData cl;
tLogData tl;
// fill cl
for(size_t i = 0; i < cl.size(); ++i){
// invokes the copy ctor of CLog
CLog* plog = new CLog(*cl[i]);
tl.push_back(plog);
}
要一個載體複製到另一個你可以通過兩種方式使用std::copy
:
1)調整目標載體和複製的迭代器:
tlogData.clear();
tlogData.resize(CLogData.size());
std::copy(CLogData.begin(), CLogData.end(), tLogData.begin());
2)使用back_inserter:
std::copy(CLogData.begin(), CLogData.end(), std::back_inserter(tLogData));
但是,只複製從一個向量到另一個向量的指針 - 指針指向兩個向量中的相同對象!
如果你想真正複製的對象,你必須創建新的:
size_t n = CLogData.size();
for (size_t i = 0; i < n; ++i) {
tLogData.push_back(new CLog(*CLogData[i]));
}
這隻有CLog
有一個拷貝構造函數。
我不喜歡these.but它會拋出runtimeerror它將指向vector.h且誤差線是_SCL_SECURE_VALIDATE_RANGE( \t \t \t _Myptr + _off <=((_Myvec *)(這 - > _ Getmycont())) - > _Mylast && \t \t \t _Myptr + _Off> =((_Myvec *)(this - > _ Getmycont())) - > _ Myfirst); – karthik 2011-03-28 12:30:44
除非您先調整目標容器的大小,否則您需要爲'copy'使用'back_inserter'迭代器。 – Nim 2011-03-28 12:39:17
是的,抱歉,我忘記了back_inserter。我糾正了我的例子,並添加了兩種方式。 – MacGucky 2011-03-28 12:44:12
有什麼東西在文檔的'VECTOR'被混淆嗎? – 2011-03-28 12:27:14
你的意思是你需要複製指針指向的對象嗎?在向量中存儲指針而不是對象的原因是什麼? – 2011-03-28 12:39:54
爲什麼你在這裏有兩個相同的'typedef'? – 2011-03-28 12:47:56