【问题标题】:How to implement functions with container list如何用容器列表实现功能
【发布时间】:2014-05-02 12:15:05
【问题描述】:

我正在学习容器列表。我想编写函数来替换(索引上的元素),插入(索引上的元素),我想知道如何删除它们。我在两天内观看视频和阅读文章时正在学习这一点,但我只是不知道如何编写此代码。 我知道列表如何与指针一起工作。

这就是我的想象(这只是一个开始)

void replace(list<Contact> &listOf, int index, const Contact &information) {

    for(list<int>::iterator it = listOf.begin(); it != listOf.end(); it++){

    }
}

我不知道for循环是否写对了,但我想它会通过列表,如果找到要替换的索引,它将直接覆盖。

我认为函数 insert 具有相同的参数。

这就是我想象的删除它的方式,但我不确定如何实现。

Contact delete(list<Contact> &listOf, int index) {

}

我在程序开始时创建了带有姓名和姓氏的联系人结构。

【问题讨论】:

    标签: c++ list function containers


    【解决方案1】:

    循环应该写

    for (list<Contact>::iterator it = listOf.begin(); it != listOf.end(); ++it) {
        do what you wan't with *it.
    }
    

    【讨论】:

      【解决方案2】:

      列表没有随机访问,因此不适合这种操作。如果您坚持,这里有一种方法可以避免自己编写循环:

      void replace(list<Contact> &listOf, int index, const Contact &information) {
          list<int>::iterator it = listOf.begin();
          std::advance(it, index);
          *it = information;
      }
      

      使用std::vector 进行随机访问操作。使用std::list 在容器中间进行插入或删除等修改。

      【讨论】:

      • 你能告诉我如何正确操作列表吗?如果您能向我展示如何替换的整个代码,我会很高兴。如果它是可能的?我真的很想知道如何执行这些功能。谢谢
      • 查看std::list reference。与其他容器相比,列表特别擅长的方法是,例如假设您有迭代器指向列表中的元素,则插入、擦除、合并或拼接。如果您只有一个索引,则可以如上所述使用std::advance 来获取迭代器,然后应用列表的方法之一。但请记住,这是非常低效的。在这种情况下,很可能最好使用向量,即使相应的方法不如列表有效。
      猜你喜欢
      • 2018-06-10
      • 2019-06-09
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 2022-12-03
      相关资源
      最近更新 更多