📅  最后修改于: 2023-12-03 15:08:34.842000             🧑  作者: Mango
在C++中,STL List是一种双向链表的容器,支持快速插入和删除操作,和随机访问比起来较为低效。因此,在需要频繁插入和删除数据的场景下,STL List容器是一个不错的选择。
接下来,我们就来介绍如何在STL List中插入元素。
STL List容器提供了多种插入单个元素的方法,如push_front、push_back和insert等。
std::list<int> myList;
myList.push_front(1); // 在头部插入元素1
std::list<int> myList;
myList.push_back(1); // 在尾部插入元素1
std::list<int> myList;
myList.insert(myList.begin(), 1); // 在头部插入元素1
myList.insert(myList.end(), 1); // 在尾部插入元素1
myList.insert(myList.begin()+1, 2); // 在第2个位置后面插入元素2
STL List容器提供了多种插入多个元素的方法,如assign和insert等。
std::list<int> myList;
std::vector<int> myVector = {1, 2, 3, 4, 5};
myList.assign(myVector.begin(), myVector.end()); // 将Vector中的元素复制到List中
std::list<int> myList;
std::vector<int> myVector = {1, 2, 3, 4, 5};
myList.insert(myList.begin(), myVector.begin(), myVector.end()); // 在头部插入一组元素
当需要在STL List中存储自定义数据结构时,我们需要定义一个重载了小于运算符的数据结构和一个仿函数。
例如,我们需要在List中存储Person结构体:
struct Person {
int age;
std::string name;
// 重载小于运算符,必须加上const关键字
bool operator<(const Person &p) const {
return age < p.age;
}
};
// 定义仿函数
struct PersonCompare {
bool operator()(const Person &p1, const Person &p2) const {
return p1.age < p2.age;
}
};
然后我们就可以通过调用STL List的插入方法插入Person对象了。
std::list<Person> myList;
Person p1 = {25, "Alice"};
Person p2 = {30, "Bob"};
myList.insert(myList.end(), p1); // 在List尾部插入Person p1
myList.insert(myList.end(), p2); // 在List尾部插入Person p2
以上就是在C++ STL List中插入元素的介绍。希望能对大家有所帮助!