2014-03-24 21 views
0

我在学习容器列表。我想编写函数来替换(索引上的元素),插入(索引上的元素),我想知道如何删除它们。我正在学习这两天我观看视频和阅读文章,但我不知道如何编写此代码。 我知道如何使用指针进行列表工作。如何使用容器列表实现功能

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

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

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

    } 
} 

我不知道,如果for循环writen正确的,但我想到的是它经历列表,如果发现指数,想要替换它将会被覆盖。

我觉得功能插入具有相同的参数。

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

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

} 

我已经在程序的开始创建了名字和姓氏联系人的结构。

回答

1

循环应该写成

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

名单没有随机访问等是不适合这样的操作。如果你坚持,这里有一个方法来避免自己写一个循环:

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进行修改,如在容器中间插入或删除。

+0

你能告诉我如何正确操纵列表。如果你能告诉我整个代码如何替换,我会很高兴。如果它是可能的?我真的想知道如何去做这些功能。谢谢 – user3127680

+0

看看[std :: list reference](http://en.cppreference.com/w/cpp/container/list)。方法与其他容器相比,列表特别好。插入,擦除,合并或拼接,假设您有迭代器指向列表中的元素。如果你只有一个索引,那么可以像上面那样使用'std :: advance'来获得一个迭代器,然后应用一个列表的方法。但请记住,这是非常低效的。在这种情况下最好使用向量,即使相应的方法不如列表有效。 – iavr