gpt4 book ai didi

c++ - 错误 : no match for 'operator+' (operand types are 'std::__cxx11::list' and 'int' )|

转载 作者:行者123 更新时间:2023-12-01 14:47:19 25 4
gpt4 key购买 nike

我正在尝试获取偶数整数数组和奇数整数列表,然后尝试使用 C++ 的 STL 中可用的merge 算法将它们合并到一个 vector 中。该任务特别需要使用 merge 算法,我在 line 43 处陷入错误,我在右侧评论说这是错误点。

#include <iostream>
#include <algorithm>
#include <functional>
#include <cstring>
#include <vector>
#include <list>
#include <cstdlib>
using namespace std;
void display(list<int>&l){
list<int>::iterator p;
for(p=l.begin();p!=l.end();++p){
cout<<*p<<", ";
}
cout<<"\n";
}
void display(int arr[6]){
for(int i=0;i<6;i++){
cout<<arr[i]<<" ";
}
cout<<"\n";
}
int main()
{
int inp;
int even_arr[6];
list<int> odd_list(6);
cout<<"Enter even numbers: ";
for(int i=0;i<6;i++){
cin>>even_arr[i];
}
display(even_arr);
list<int>::iterator p;
cout<<"\nEnter odd numbers: ";
for(p=odd_list.begin();p!=odd_list.end();++p){
cin>>inp;
*p = inp;
}
display(odd_list);

vector<int> vec1(12);
list<int>::iterator itr=odd_list.begin();
int *ptr=even_arr;
merge(even_arr,even_arr+6,odd_list,odd_list+6,vec1); //ERROR LINE

return 0;
}

最佳答案

您不能像对数组那样向 std::list 添加内容。此外,最好明确说明迭代器并使用 std::end 获取尾后迭代器,因为无论如何您都想使用整个数组。

此外,std::merge() 需要迭代器,但最后一个参数是 vec1,它是一个 std::vector。正确的版本是:

merge(begin(even_arr), end(even_arr),
begin(odd_list), end(odd_list),
begin(vec1));

我省略了 std:: 以提高可读性。

使用 std::begin 而不是 odd_list.begin() (和类似的)是有争议的,取决于个人喜好。

关于c++ - 错误 : no match for 'operator+' (operand types are 'std::__cxx11::list<int>' and 'int' )|,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62957115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com