我必须将插入器作为函数参数传递,以便赋值 由make_pair返回到插入器并将它们存储到容器中。有人能帮助我理解make_pair
和插入器的相关性吗?
#include <iostream>
#include <list>
#include <vector>
#include <exception>
#include <map>
#include <utility>
template<typename T,typename U,typename V,typename K>
void fun(T beg1,T end1, U beg2, U end2,V ins,K fun){
try{
if(std::distance(beg1,end1)!=std::distance(beg2,end2)){
{
throw std::string{"They're not the same size"};
}
}
} catch(std::string& ex){
std::cout<<ex<<std::endl;
}
while(beg1!=beg2){
if(!(fun(*beg1,*beg2))){
ins=std::make_pair(*beg1,*beg2);
++beg1;
++beg2;
}
}
}
int main(){
std::vector<std::string> l1{"mel","ana","tim"};
std::vector<std::string> l2{"ana","mel","tim"};
std::pair<std::string, std::string> l3;
auto l=[](const std::string& a, const std::string& b){
return a==b;
};
fun(begin(l1),end(l1),begin(l2),end(l2),inserter(?),l);
}
1条答案
按热度按时间2ul0zpep1#
make_pair
只是创建一个pair
对象,它没有做任何复杂的事情。听起来你需要的是类似
std::back_inserter
的东西,它返回一个迭代器,你可以把结果写入其中:然后在你的
fun
中,你写迭代器:另一种选择是创建一个插入器函数:
然后在
fun
中,调用函数: