Chemical Data Processing Library C++ API - Version 1.4.0
Classes | Typedefs | Enumerations | Functions
CDPL::Util Namespace Reference

Contains general purpose algorithms, containers, functors and other classes. More...

Classes

class  Array
 Dynamic array class providing amortized constant time access to arbitrary elements. More...
 
class  BronKerboschAlgorithm
 Implementation of the Bron-Kerbosch clique-detection algorithm [BKA]. More...
 
class  CompoundDataReader
 Composite Base::DataReader that aggregates several underlying readers and presents their records as one contiguous record stream. More...
 
class  CompressedDataReader
 Adapter that wraps a stream-based reader with a decompression stream to read records from a compressed data stream. More...
 
class  CompressedDataWriter
 Convenience wrapper that combines a Util::CompressionOStream of type CompStream with a stream-based writer WriterImpl so that data written via this Base::DataWriter is automatically compressed on the fly. More...
 
struct  CompressionAlgoTraits
 Traits-style template selecting the boost::iostreams compression/decompression filters that implement a given Util::CompressionAlgo. Specialized for each supported algorithm. More...
 
struct  CompressionAlgoTraits< GZIP >
 Util::CompressionAlgoTraits specialization for the gzip algorithm. More...
 
struct  CompressionAlgoTraits< BZIP2 >
 Util::CompressionAlgoTraits specialization for the bzip2 algorithm. More...
 
class  CompressionStreamBase
 Base class for stream wrappers that buffer (de)compressed data through a temporary file. More...
 
class  DecompressionIStream
 Input stream wrapper that transparently decompresses data read from an underlying compressed source stream. More...
 
class  CompressionOStream
 Output stream wrapper that transparently compresses data and writes it to an underlying sink stream when the wrapper is closed or destroyed. More...
 
class  CompressedIOStream
 Bidirectional stream wrapper that decompresses data read from stream into a temporary buffer and re-compresses the (possibly modified) buffer back to stream on close. More...
 
class  DefaultDataInputHandler
 Default Base::DataInputHandler implementation that exposes a fixed Base::DataFormat and instantiates readers of the supplied stream-based ReaderImpl type (file-based readers are produced by wrapping it in Util::FileDataReader). More...
 
class  DefaultDataOutputHandler
 Default Base::DataOutputHandler implementation that exposes a fixed Base::DataFormat and instantiates writers of the supplied stream-based WriterImpl type (file-based writers are produced by wrapping it in Util::FileDataWriter). More...
 
struct  Dereferencer
 Unary functor for the dereferenciation of pointers without null pointer checking. More...
 
struct  NullCheckDereferencer
 Unary functor for the dereferenciation of pointers with null pointer checking. More...
 
class  DGCoordinatesGeneratorBase
 Serves as foundation for subclasses that perform coordinates generation based on distance-geometry. More...
 
class  DGCoordinatesGenerator
 Generic distance-geometry implementation for the generation of coordinates that fulfill user-provided distance constraints. More...
 
class  DGCoordinatesGenerator< 3, T >
 Specialized distance-geometry implementation for the generation of 3D coordinates that fulfill user-provided distance and volume constraints. More...
 
class  FileDataReader
 Convenience wrapper that adapts a stream-based reader implementation ReaderImpl into a file-based Base::DataReader by opening an std::ifstream and forwarding all read operations to the wrapped reader. More...
 
class  FileDataWriter
 Convenience wrapper that adapts a stream-based writer implementation WriterImpl into a file-based Base::DataWriter by opening an std::fstream and forwarding all write operations to the wrapped writer. More...
 
class  FileRemover
 RAII helper that deletes a file when the FileRemover instance goes out of scope (unless released beforehand). Useful for guaranteeing the cleanup of temporary files. More...
 
class  IndexedElementIterator
 STL compatible random access iterator for container elements accessible by index. More...
 
class  IndirectArray
 Dynamic array class for the storage of object pointers with an indirected query interface. More...
 
struct  MapDefaultValue
 
struct  MapDefaultValue< ValueType, false >
 
class  Map
 A unique sorted associative container that maps keys to values. More...
 
class  MultiFormatDataReader
 Reader that auto-dispatches to a format-specific reader registered with Base::DataIOManager. More...
 
class  MultiFormatDataWriter
 Base::DataWriter front-end that automatically selects a concrete handler from Base::DataIOManager based on the output file name or an explicitly supplied format identifier. More...
 
struct  MultiMapDefaultValue
 
struct  MultiMapDefaultValue< ValueType, false >
 
class  MultiMap
 A multiple sorted associative container that maps keys to values. More...
 
class  ObjectPool
 Data structure that caches instances of type T up to a user specified amount. More...
 
class  ObjectStack
 Reusable object pool with stack-like borrow/return semantics. More...
 
class  PropertyValue
 Unary functor that retrieves the value of a given property from the Base::PropertyContainer instance provided as argument. More...
 
class  PropertyValueProduct
 Binary functor that calculates the product of two property values retrieved from a pair of Base::PropertyContainer instances passed as argument. More...
 
class  StreamDataReader
 Helper class that implements Base::DataReader for std::istream based data readers. More...
 

Typedefs

typedef Array< unsigned int > UIArray
 Array storing unsigned integers of type unsigned int. More...
 
typedef Array< std::size_t > STArray
 Array storing unsigned integers of type std::size_t. More...
 
typedef Array< long > LArray
 Array storing integers of type long. More...
 
typedef std::pair< std::size_t, std::size_t > STPair
 Pair of unsigned integers of type std::size_t. More...
 
typedef Array< STPairSTPairArray
 Array storing pairs of unsigned integers of type std::size_t. More...
 
typedef Array< double > DArray
 Array storing floating point values of type double. More...
 
typedef Array< std::string > SArray
 Array storing std::string objects. More...
 
typedef Array< BitSetBitSetArray
 Array storing Util::BitSet objects. More...
 
typedef boost::dynamic_bitset BitSet
 Dynamic bitset class. More...
 
typedef DecompressionIStream< GZIPGZipIStream
 Input stream that transparently decompresses gzip-compressed data. More...
 
typedef DecompressionIStream< BZIP2BZip2IStream
 Input stream that transparently decompresses bzip2-compressed data. More...
 
typedef CompressionOStream< GZIPGZipOStream
 Output stream that transparently writes gzip-compressed data. More...
 
typedef CompressionOStream< BZIP2BZip2OStream
 Output stream that transparently writes bzip2-compressed data. More...
 
typedef CompressedIOStream< GZIPGZipIOStream
 Bidirectional stream that transparently (de)compresses gzip data. More...
 
typedef CompressedIOStream< BZIP2BZip2IOStream
 Bidirectional stream that transparently (de)compresses bzip2 data. More...
 
typedef DGCoordinatesGenerator< 3, double > DG3DCoordinatesGenerator
 Convenience alias for the 3D coordinates generator with double-precision values. More...
 

Enumerations

enum  CompressionAlgo {
  GZIP ,
  BZIP2
}
 Identifiers for the compression algorithms supported by the Util compression-stream wrappers. More...
 

Functions

template<typename ValueType >
bool operator== (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Equality comparison operator. More...
 
template<typename ValueType >
bool operator!= (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Inequality comparison operator. More...
 
template<typename ValueType >
bool operator<= (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Less or equal comparison operator. More...
 
template<typename ValueType >
bool operator>= (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Greater or equal comparison operator. More...
 
template<typename ValueType >
bool operator< (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Less than comparison operator. More...
 
template<typename ValueType >
bool operator> (const Array< ValueType > &array1, const Array< ValueType > &array2)
 Greater than comparison operator. More...
 
void fold (BitSet &bs, std::size_t num_times)
 Folds the bitset bs the specified number of times. More...
 
CDPL_UTIL_API std::string genCheckedTempFilePath (const std::string &dir="", const std::string &ptn="%%%%-%%%%-%%%%-%%%%")
 Generates a temporary file path inside dir whose basename matches the supplied randomization ptn and that is guaranteed not to collide with any existing file. More...
 
CDPL_UTIL_API bool checkIfSameFile (const std::string &path1, const std::string &path2)
 Tells whether path1 and path2 refer to the same file (after resolving symlinks and case-insensitivity rules of the underlying file system). More...
 
CDPL_UTIL_API bool fileExists (const std::string &path)
 Tells whether the file at path exists. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator== (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Equality comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator!= (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Inequality comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator<= (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Less or equal comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator>= (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Greater or equal comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator< (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Less than comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator> (const Map< Key, Value, AllowDefValues, KeyCompFunc > &map1, const Map< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Greater than comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator== (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Equality comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator!= (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Inequality comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator<= (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Less or equal comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator>= (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Greater or equal comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator< (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Less than comparison operator. More...
 
template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool operator> (const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map1, const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &map2)
 Greater than comparison operator. More...
 
template<typename InputIt1 , typename InputIt2 , typename BinaryFunc >
void forEachPair (InputIt1 it1, InputIt1 end1, InputIt2 it2, BinaryFunc func)
 Invokes the binary function func on every pair of corresponding elements drawn from two parallel input sequences. More...
 
template<typename InputIt1 , typename InputIt2 , typename BinaryFunc >
void forEachPair (InputIt1 it1, InputIt1 end1, InputIt2 it2, InputIt2 end2, BinaryFunc func)
 Invokes the binary function func on every pair of corresponding elements drawn from two parallel input sequences, stopping when either sequence is exhausted. More...
 

Detailed Description

Contains general purpose algorithms, containers, functors and other classes.

Typedef Documentation

◆ UIArray

typedef Array<unsigned int> CDPL::Util::UIArray

Array storing unsigned integers of type unsigned int.

◆ STArray

typedef Array<std::size_t> CDPL::Util::STArray

Array storing unsigned integers of type std::size_t.

◆ LArray

typedef Array<long> CDPL::Util::LArray

Array storing integers of type long.

◆ STPair

typedef std::pair<std::size_t, std::size_t> CDPL::Util::STPair

Pair of unsigned integers of type std::size_t.

◆ STPairArray

Array storing pairs of unsigned integers of type std::size_t.

◆ DArray

typedef Array<double> CDPL::Util::DArray

Array storing floating point values of type double.

◆ SArray

typedef Array<std::string> CDPL::Util::SArray

Array storing std::string objects.

◆ BitSetArray

Array storing Util::BitSet objects.

◆ BitSet

typedef boost::dynamic_bitset CDPL::Util::BitSet

Dynamic bitset class.

For further information see [BDBS].

◆ GZipIStream

Input stream that transparently decompresses gzip-compressed data.

◆ BZip2IStream

Input stream that transparently decompresses bzip2-compressed data.

◆ GZipOStream

Output stream that transparently writes gzip-compressed data.

◆ BZip2OStream

Output stream that transparently writes bzip2-compressed data.

◆ GZipIOStream

Bidirectional stream that transparently (de)compresses gzip data.

◆ BZip2IOStream

Bidirectional stream that transparently (de)compresses bzip2 data.

◆ DG3DCoordinatesGenerator

Convenience alias for the 3D coordinates generator with double-precision values.

Enumeration Type Documentation

◆ CompressionAlgo

Identifiers for the compression algorithms supported by the Util compression-stream wrappers.

Enumerator
GZIP 

Identifier for the gzip compression algorithm.

BZIP2 

Identifier for the bzip2 compression algorithm.

Function Documentation

◆ operator==() [1/3]

template<typename ValueType >
bool CDPL::Util::operator== ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Equality comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if the sizes and elements of the arrays are equal, and false otherwise.

◆ operator!=() [1/3]

template<typename ValueType >
bool CDPL::Util::operator!= ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Inequality comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if the sizes or elements of the arrays are non-equal, and false otherwise.

◆ operator<=() [1/3]

template<typename ValueType >
bool CDPL::Util::operator<= ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Less or equal comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if array1 is lexicographically less than or equal to array2, and false otherwise.

◆ operator>=() [1/3]

template<typename ValueType >
bool CDPL::Util::operator>= ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Greater or equal comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if array1 is lexicographically greater than or equal to array2, and false otherwise.

◆ operator<() [1/3]

template<typename ValueType >
bool CDPL::Util::operator< ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Less than comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if array1 is lexicographically less than array2, and false otherwise.

◆ operator>() [1/3]

template<typename ValueType >
bool CDPL::Util::operator> ( const Array< ValueType > &  array1,
const Array< ValueType > &  array2 
)

Greater than comparison operator.

Parameters
array1The first array.
array2The second array.
Returns
true if array1 is lexicographically greater than array2, and false otherwise.

◆ fold()

void CDPL::Util::fold ( BitSet bs,
std::size_t  num_times 
)
inline

Folds the bitset bs the specified number of times.

Folding a bitset means that the lower and upper half of the bitset are combined by a logical OR operation to produce a new bitset which is half of the original size. This process is repeated the specified number of times. See also [DTPFP].

Parameters
bsThe bitset to fold.
num_timesThe number of times the bitset has to be folded.

◆ genCheckedTempFilePath()

CDPL_UTIL_API std::string CDPL::Util::genCheckedTempFilePath ( const std::string &  dir = "",
const std::string &  ptn = "%%%%-%%%%-%%%%-%%%%" 
)

Generates a temporary file path inside dir whose basename matches the supplied randomization ptn and that is guaranteed not to collide with any existing file.

Parameters
dirThe directory in which to place the file (an empty string selects the platform's temporary directory).
ptnThe Boost-filesystem-style randomization pattern for the basename (% characters are replaced with random hex digits).
Returns
The generated unique file-system path.

◆ checkIfSameFile()

CDPL_UTIL_API bool CDPL::Util::checkIfSameFile ( const std::string &  path1,
const std::string &  path2 
)

Tells whether path1 and path2 refer to the same file (after resolving symlinks and case-insensitivity rules of the underlying file system).

Parameters
path1The first file-system path.
path2The second file-system path.
Returns
true if both paths resolve to the same file, and false otherwise.

◆ fileExists()

CDPL_UTIL_API bool CDPL::Util::fileExists ( const std::string &  path)

Tells whether the file at path exists.

Parameters
pathThe file-system path to test.
Returns
true if the file exists, and false otherwise.

◆ operator==() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator== ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Equality comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if the sizes and elements of the maps are equal, and false otherwise.

◆ operator!=() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator!= ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Inequality comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if the sizes or elements of the maps are non-equal, and false otherwise.

◆ operator<=() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator<= ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Less or equal comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically less than or equal to map2, and false otherwise.

◆ operator>=() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator>= ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Greater or equal comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically greater than or equal to map2, and false otherwise.

◆ operator<() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator< ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Less than comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically less than map2, and false otherwise.

◆ operator>() [2/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator> ( const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const Map< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Greater than comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically greater than map2, and false otherwise.

◆ operator==() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator== ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Equality comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if the sizes and elements of the maps are equal, and false otherwise.

◆ operator!=() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator!= ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Inequality comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if the sizes or elements of the maps are non-equal, and false otherwise.

◆ operator<=() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator<= ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Less or equal comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically less than or equal to map2, and false otherwise.

◆ operator>=() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator>= ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Greater or equal comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically greater than or equal to map2, and false otherwise.

◆ operator<() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator< ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Less than comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically less than map2, and false otherwise.

◆ operator>() [3/3]

template<typename Key , typename Value , bool AllowDefValues, typename KeyCompFunc >
bool CDPL::Util::operator> ( const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map1,
const MultiMap< Key, Value, AllowDefValues, KeyCompFunc > &  map2 
)

Greater than comparison operator.

Parameters
map1The first map.
map2The second map.
Returns
true if map1 is lexicographically greater than map2, and false otherwise.

◆ forEachPair() [1/2]

template<typename InputIt1 , typename InputIt2 , typename BinaryFunc >
void CDPL::Util::forEachPair ( InputIt1  it1,
InputIt1  end1,
InputIt2  it2,
BinaryFunc  func 
)

Invokes the binary function func on every pair of corresponding elements drawn from two parallel input sequences.

Template Parameters
InputIt1The input iterator type of the first sequence.
InputIt2The input iterator type of the second sequence.
BinaryFuncThe type of the binary function.
Parameters
it1An iterator pointing to the first element of the first sequence.
end1An iterator pointing one past the last element of the first sequence.
it2An iterator pointing to the first element of the second sequence (assumed to have at least as many elements as the first).
funcThe binary function invoked for each pair.

◆ forEachPair() [2/2]

template<typename InputIt1 , typename InputIt2 , typename BinaryFunc >
void CDPL::Util::forEachPair ( InputIt1  it1,
InputIt1  end1,
InputIt2  it2,
InputIt2  end2,
BinaryFunc  func 
)

Invokes the binary function func on every pair of corresponding elements drawn from two parallel input sequences, stopping when either sequence is exhausted.

Template Parameters
InputIt1The input iterator type of the first sequence.
InputIt2The input iterator type of the second sequence.
BinaryFuncThe type of the binary function.
Parameters
it1An iterator pointing to the first element of the first sequence.
end1An iterator pointing one past the last element of the first sequence.
it2An iterator pointing to the first element of the second sequence.
end2An iterator pointing one past the last element of the second sequence.
funcThe binary function invoked for each pair.