0
我正在尋找檢查兩個向量交叉點的最佳方法。Boost.Test - 如何檢查交叉點上的兩個向量?
像
for (auto const & first: first_vector)
for (auto const & next: next_vector)
if first == next
return false;
嵌套循環可以做的工作,但它看起來並不像一個如Boost.Test十歲上下的方式。無論看看Boost.Test有很大幫助,作爲唯一的測試用例預定義是BOOST_CHECK_EQUAL_COLLECTIONS
更新
BOOST_FIXTURE_TEST_CASE(paths,fixture_t)
{
for(int i=0,j=vids.size(); i!=j; i++)
{
for(int p=0,q=vids.size(); p!=q; p++)
{
if (i == p)
{
continue;
}
if (i < p)
{
BOOST_TEST_CONTEXT("Equal match at positions " << i << " and " << p)
BOOST_TEST(vids[i] != vids[p]);
}
}
}
}
['std :: set_intersection'](http://en.cppreference.com/w/cpp/algorithm/set_intersection)? – NathanOliver
性能取決於兩個矢量的大小。如果'std :: set_intersection'不夠好,你需要解釋原因。提示:如果兩個矢量都很大,你可以用其中一個來製作BST,這將顯着加快速度。 – erip
'std :: set_intersection'很好,但是如何以'BOOST_CHECK_EQUAL_COLLECTIONS'這樣的方式從'Boost.Test'中獲取相應的答案(值和確切位置)? – user1587451