【发布时间】:2019-05-20 17:43:09
【问题描述】:
我们有两个大小取决于运行时的向量,需要检查它们是否相等 - 只有在较小大小的向量结束后才会有不同的元素。我使用了 std::equal 但问题是我需要首先找到哪个向量较小,这会导致额外的代码行:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> a(1000, 3);
std::vector<int> a1(100, 3);
if(a.size() > a1.size())
{
if(std::equal(a1.begin(), a1.end(), a.begin()))
{
std::cout << "Same a gt a1" << std::endl;
}
}
if(a1.size() > a.size())
{
if(std::equal(a.begin(), a.end(), a1.begin()))
{
std::cout << "Same a1 gt a" << std::endl;
}
}
if(a1.size() == a.size())
{
if(std::equal(a.begin(), a.end(), a1.begin()))
{
std::cout << "Same a = a1" << std::endl;
}
}
}
可以改进比较两个向量或仅在较小向量末尾不同的代码吗?
【问题讨论】:
-
仅 C++11?没有 C++14 吗?
-
如果你没有实际问题(比如你当前的代码不满足性能要求,不一定是bug),只是想要代码审查,那么有codereview.stackexchange.com