删除矢量数据而不是向前推进

时间:2013-02-03 16:07:19

标签: c++ vector

我有一个载体,其数据为

  

记录1:03:特德
  记录2:06:玛丽   记录3:23:渡轮

如何以Record 2数据无法推升并最终成为Record 3的方式删除Record 2

1 个答案:

答案 0 :(得分: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 for C ++ 03,尽管可以使用insert改进C ++ 03,所以没有需要Record的默认构造函数。我想C ++ 11也可以在迭代时使用const,尽管这不是重点。