gpt4 book ai didi

c++ - 为什么cout<<更低;和 cout<
转载 作者:行者123 更新时间:2023-11-30 05:00:55 27 4
gpt4 key购买 nike

在代码的最后第二行:

vector<int> v;
cin>>n;
vector<int>::iterator lower;
for(i=0;i<n;i++)
{
cin>>b;
v.push_back(b);
}
cin>>t;
for(i=0;i<t;i++)
{
cin>>a;
lower=lower_bound(v.begin(),v.end(),a);
cout<<(lower-v.begin())<<endl;
}

cout<<lower; 有什么区别?和 cout<<v.begin();单独导致错误但cout<<(lower-v.begin());使程序易于编译。

最佳答案

因为重载决议的发现。

没有(默认情况下)重载 <<匹配 std::ostream& operator<<(std::ostream&, std::vector<int>::iterator) .如果你愿意,你可以写一个。

<< 过载匹配 std::ostream& operator<<(std::ostream&, std::vector<int>::difference_type) , 并且重载了 -匹配 std::vector<int>::difference_type operator-(std::vector<int>::iterator, std::vector<int>::iterator)

您可以将该行分解为

std::vector<int>::difference_type diff = lower - v.begin(); // some number
std::cout << diff << std::endl; // print the number

关于c++ - 为什么cout<<更低;和 cout<<v.begin;单独给出错误,但 cout <<(lower.begin());没有给出任何错误并使代码易于编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50509697/

27 4 0

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