在c++中,如何在列表的单个位置插入多个不同的值



此代码来自极客对极客

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

所以,我想在一个位置添加不同的值,而不是重复相同的值。这可能吗?例如,在列表的第三位插入1,3,7。

检查引用。

您可以使用insert():之一

template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last);            (until C++11)
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, 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

最新更新