而list.begin()返回的也就是__end_.__next_这个指针的iterator封装。
而rbegin的效果是reverse_iterator(end())[3],因为end返回的迭代器应该在push_back后不变,仍然保持「...
begin、end和cbegin、cend 功能描述 begin和cbegin返回指向list首元素的迭代器, end和cend返回指向list末元素后一元素的迭代器。 函数原型 代码语言:javascript 复制 iterator begin(); //C++11 前 iterator begin() noexcept; //C++11 起 const_iterator begin() const; //C++11 前 const_iterator begin() con...
l5.erase(l5.begin(), l5.end()); // delete all list<int> l5_3({ 1,2,3,4,5,6,7,8,9,0 }); auto it = l5_3.begin(); it++; // 不支持 + ,没有 + 重载。但是可以使用 std::advance 函数来完成固定步长的迭代器移动。 ++it; l5_3.erase(l5_3.begin(), it); // delete ...
std::list<int>list(begin, end); 当我们已经有一个std::list在这里的时候,我们需要对它进行操作,相对容器而言它的基本操作就是插入与删除元素,同时提供一些额外的操作诸如排序或合并等等。这些操作std::list都存在,但它有自己的优势,它往往有指针来完成操作,而不是简单的复制。
for (auto it = myList.begin(); it != myList.end(); ++it) { std::cout << *it << " ";} 在指定位置插入元素,可以使用insert()函数:cpp myList.insert(it, 30); // 在it位置插入30 移除第一个元素用remove_first(),清空容器用clear(),检查是否为空用empty()函数:cpp my...
常用方法begin和end方法根据哨兵结点的指向来确定链表的开始和结束,当list为空时,这些方法的实现有所不同。其他常见的成员函数如push_back和insert,主要是通过双向链表的指针操作来完成的,这里不再详述。总的来说,理解list的这些核心概念和操作,你就可以在需要时自如地使用std::list了。
6.begin() 返回第一个元素的指针(iterator) it= list1.begin(); // *it = 1 7.end() 返回最后一个元素的 下一位置 的指针(list 为空时end()=begin()) it= list1.end(); --it; // *it = 3 8.rbegin() 返回链表最后一 元素的后向指针(reverse_iterator or const) ...
auto it = std::find(myList.begin(), myList.end(), 5); if (it != myList.end()) { myList.insert(it, 4); // 在第一个5之前插入4 } // 删除一个特定的元素 myList.remove(2); // 删除所有的2 // 对list进行排序 myList.sort(); ...
list<int>L4(L0.begin(),L0.end());//建一个含L0一个区域的元素 2. assign()分配值,有两个重载 L1.assign(4,3);// L1(3,3,3,3) L1.assign(++list1.beging(), list2.end());//L1(2,3) 3.operator=赋值重载运算符 L1 = list1;//L1(1,2,3) ...