-1
为了找到最大总和对,其中一个元件是从第二矢量阵列的一个矢量阵列和其他元件拍摄.I发现这个代码here但两个矢量阵列的组合超过限制失败时V1的大小和v2都成为100000作为输出数组大小并中止被调用。查找其总计为最大c中的所有其他组合++
#include <vector>
#include <algorithm>
#include <iostream>
#include <iterator>
typedef int T;
struct Fctor
{
typedef std::vector<T>::iterator Iterator;
Iterator it1, it2, begin, end;
Fctor(Iterator begin1, Iterator end1, Iterator begin2)
{
begin = begin1;
end = end1;
it1 = begin1;
it2 = begin2;
}
T operator()()
{
// T result = f(*it1, *it2);
T result = (*it1) * (*it2);
if(++it1 != end) return result;
it1 = begin;
++it2;
return result;
}
};
int main()
{
std::vector<T> v1; v1.push_back(1); v1.push_back(2);
std::vector<T> v2; v2.push_back(3); v2.push_back(4); v2.push_back(5);
std::vector<T> result(v1.size() * v2.size());
Fctor fctor(v2.begin(), v2.end(), v1.begin());
generate(result.begin(), result.end(), fctor);
std::copy(result.begin(), result.end(),
std::ostream_iterator<T>(std::cout, " "));
std::cout << std::endl;
// => 3 4 5 6 8 10
}
我有一些坏消息。看起来你的键盘坏了,'TAB'键不能可靠工作。由于缺乏逻辑缩进,所显示的代码大部分是不可读的。你应该让你的键盘所取代,并用清晰,逻辑缩进重写代码,让其他人实际上可以读取它。 –
不是答案只是每个矢量的最大元素?您不需要生成所有可能的配对。 – Blastfurnace
有一种方法,以检查这两个矢量的全部组合,在不到O(N^2)时间(任何内置函数左右。) – shashank