我想使用equal算法比较两组,但它给了我一个错误.怎么知道两套是否相等?
if(equal (a.begin(), a.end(), v.begin(), v.end())
Run Code Online (Sandbox Code Playgroud)
Ker*_* SB 12
你可以简单地说a == v,也许 .它尽可能高效.a.size() == v.size() && a == v(具有显式大小检查的后一种形式可能更好,因为set迭代器不是随机访问.) 更新:隐含尺寸检查[感谢@juanchopanza!]
你可能会调用带有3个迭代器和一个额外谓词的std::equal重载.所以只是放弃第二个结束,因为它不被解释为结束迭代器,而是一个谓词,这是垃圾:
std::equal(a.begin(), a.end(), v.begin())
Run Code Online (Sandbox Code Playgroud)
但是,正如马克在他的评论中所说的那样,你必须确保两个容器的大小都事先匹配,否则你就有可能跑到第二组的末尾.请注意,C++ 14确实会引入一个带有std::equal四个迭代器的重载(这是你想要的),并且会隐式地执行大小检查,但是你的实现似乎还不支持它.
除此之外,其他答案和评论都是正确的,因为a == v它更简单,更清晰,更简化.
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |