大佬教程收集整理的这篇文章主要介绍了C++ list(STL list)增加和插入元素详解(insert成员函数插入元素),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
std::list<std::string> names { "Jane","Jim","Jules","Janet"}; names.push_front("Ian"); // Add String ("Ian") to the front of the list names.push_BACk("Kitty"); // Append String ("Kitty") to the end of the list这两个函数都有右值引用参数的版本,这种版本的函数会移动参数而不是从参数复制新的元素。它们显然要比其他使用左值引用参数的版本高效。然而,成员函数 emplace_front() 和 emplace_BACk() 可以做得更好:
names.emplace_front("Ian");//Create String ("Ian") in place at the front of the list names.emplace_BACk("Kitty");// Create String ("Kitty") in place at the end of the list这些成员函数的参数是调用以被生成元素的构造函数的参数。它们消除了 push_front() 和 push_BACk() 不得不执行的右值移动运算。
std::list<int> data(10,55); // List of 10 elements with value 55 data.insert(++begin(data),66); // Insert 66 as the second elementinsert() 的第一个参数是一个指定插入点的迭代器,第二个参数是被插入的元素。begin() 返回的双向迭代器自增后,指向第二个元素。上面的语句执行完毕后,list 容器的@L_616_21@如下:
auto iter = begin(data); std::advance(iter,9); // Increase iter by 9 data.insert(iter,3,88);// Insert 3 copies of 88 starTing at the 10thiter 是 list<int>::iterator 类型。insert() 函数的第一个参数是用来指定插入位置的迭代器,第二个参数是被插入元素的个数,第三个参数是被重复插入的元素。为了得到第 10 个元素,可以使用定义在 iterator 头文件中的全局函数 advance(),将迭代器增加 9。只能增加或减小双向迭代器。因为迭代器不能直接加 9,所以 advance() 会在循环中自增迭代器。
std::vector<int> numbers(10,5)/ // Vector of 10 elements with value 5 data.insert(--(--end(data)),cbegin(numbers),cend(numbers));insert() 的第一个参数是一个迭代器,它指向 data 的倒数第二个元素。第二和第三个参数指定了 number 中被插入元素的范围,因此从 data 中倒数第二个元素开始,依次插入 vector 的全部元素。代码执行后,data 中的@L_616_21@如下:
std::list<std:: String> names {"Jane","Janet"}; names.emplace_BACk("Ann"); std:: String name ("Alan"); names.emplace_BACk(std::move(Name)); names.emplace_front("Hugo"); names.emplace(++begin(names),"HAnnah");
以上是大佬教程为你收集整理的C++ list(STL list)增加和插入元素详解(insert成员函数插入元素)全部内容,希望文章能够帮你解决C++ list(STL list)增加和插入元素详解(insert成员函数插入元素)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。