查找一个区域中未包含在另一个区域中的第一个元素
find first element within a range not included in another range
在STL中,我可以使用std::includes
来检查第二个范围是否完全包含在第一个范围中。
对 2 个范围进行排序。
std::includes( r1.begin(), r1.end(), rng2.begin(), r2.end()); // returns a bool
如果我想要发生此故障的确切点,该怎么办?
本质上,我正在寻找 r2 中不包含在 r1 中的第一个元素或返回迭代器的东西。
我找不到任何 STL 算法。
我是否必须使用find
或已经有一些东西来编写自己的代码?
基于
std::set_difference
我写了这样的东西:
/*
* first difference of elements: element present in first container
* and not present in second
*/
template <class T>
T first_difference (T* first1, T* last1,
T* first2, T* last2)
{
while (first1!=last1 && first2!=last2)
{
if (*first1<*first2) { return *first1; }
else if (*first2<*first1) ++first2;
else { ++first1; ++first2; }
}
if ( first1 != last1 && first2 == last2) return *first1;
return 0;
}
用法:
int main(int argc, char** argv) {
int first[] = {5, 10, 15, 20, 25};
int second[] = {50, 40, 30, 20, 10};
std::sort(first, first + 5); // 5 10 15 20 25
std::sort(second, second + 5); // 10 20 30 40 50
int i = first_difference( first, first + 5, second, second + 5);
assert( i == 5);
return 0;
}
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- C++试图读取一个文件并输出到另一个文本文件
- 如何将指针从一个void函数传递到另一个C++
- 如何从另一个文件继承私有成员变量和公共函数
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 查找一个区域中未包含在另一个区域中的第一个元素
- 无法正确访问在另一个类的私人区域内声明的类
- 将一个映像的区域复制到另一个映像中的另一个区域
- Qt:限制QGraphicsItem在另一个QGraphicsItem中的可移动区域