如何解决如何在c ++中的列表的单个位置插入多个不同的值?
此代码来自 geeksforgeeks
list<int> list1;
list1.assign(3,2);
list<int>::iterator it = list1.begin();
advance(it,2);
list1.insert(it,5);
cout << "The list after inserting"
<< " 1 element using insert() is : ";
for (list<int>::iterator i = list1.begin();
i != list1.end();
i++)
cout << *i << " ";
cout << endl;
list1.insert(it,2,7);
cout << "The list after inserting"
<< " multiple elements "
<< "using insert() is : ";
for (list<int>::iterator i = list1.begin();
i != list1.end();
i++)
cout << *i << " ";
cout << endl;
它显示如下输出:-
The list after inserting 1 element using insert() is : 2 2 5 2
The list after inserting multiple elements using insert() is: 2 2 5 7 7 2
因此,我想在一个位置添加与重复相同值不同的值。那有可能吗? 用于在列表的第3位插入1,3,7。
解决方法
检查reference。
您可以使用insert()
之一:
template< class InputIt >
void insert( iterator pos,InputIt first,InputIt last); (until C++11)
template< class InputIt >
iterator insert( const_iterator pos,InputIt last ); (since C++11)
示例:
#include <iostream>
#include <vector>
#include <list>
int main(void) {
std::list<int> list1 = {2,2,5,2};
std::vector<int> to_insert = {1,3,7};
std::cout << "before insert:";
for (int v : list1) std::cout << ' ' << v;
std::cout << '\n';
list1.insert(std::next(list1.begin(),2),to_insert.begin(),to_insert.end());
std::cout << " after insert:";
for (int v : list1) std::cout << ' ' << v;
std::cout << '\n';
return 0;
}
输出:
before insert: 2 2 5 2
after insert: 2 2 1 3 7 5 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。