2013-02-03 31 views
-3

我有具有刪除向量數據,而不是推動

記錄1的數據的矢量: 記錄3瑪麗
::03:泰德
記錄2:06 23:渡輪

如何刪除Record 2Record 3數據不會推上去,最終會變成Record 2

+0

使用'std :: vector'? –

+0

請給我們的代碼。 – 0x499602D2

+0

所以你需要一個填充物元素?爲什麼不是地圖? – chris

回答

1

如果我理解正確的話,使用地圖記錄號的記載:

std::unordered_map<std::size_t, Record> records{ //or std::map in C++03 
    {1, {"03", "Ted"}}, //or records[1] = Record("03", "Ted") in C++03 
    {2, {"06", "Mary"}}, //or records[2] = Record("06", "Mary") in C++03 
    {3, {"23", "Ferry"}} //or records[3] = Record("23", "Ferry") in C++03 
}; 

records.erase(2); //leaves records[1] and records[3] intact 

對於一個完整的演示,see here FPR C++ 11,或者here爲C++ 03,雖然C + +03可以使用insert進行改進,所以Record沒有默認的構造函數。我猜想C++ 11在迭代時也可以使用const,儘管這不是重點。

+0

在C++ 11中,我更喜歡'std :: unordered_map'。 – ipc

+0

@ipc,好點。我會改變它。 – chris

+0

或者,也許不是如果你想按照正確的順序迭代。 – ipc

相關問題