algorithm - STL C++

replace_copy()

Declaration

template <class InputIterator, class OutputIterator, class X>
OutputIterator replace_copy(
	InputIterator qFirst,
	InputIterator qLast,
	OutputIterator qDest,
	const X& kxrOldValue,
	const X& kxrNewValue
);

Description

This function copies the ordered entries from "qFirst" to the one before "qLast" to the location specified by "qDest," and replaces the entries that are equal to "kxrOldValue" with "kxrNewValue" in the copy. The function returns a pointer to the end of the newly copied range.

Header Include

#include <algorithm>

Example

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
	using namespace std;

	// Create two vector instances
	vector<char> qV1;
	qV1.push_back('X');
	qV1.push_back('o');
	qV1.push_back('a');
	qV1.push_back('X');
	qV1.push_back('.');
	qV1.push_back('n');
	qV1.push_back('e');
	qV1.push_back('t');

	vector<char> qV2(12, '-');

	vector<char>::iterator qIter;
	// Output the vectors
	cout << "Original V1: ";
	for (qIter = qV1.begin(); qIter != qV1.end(); ++qIter) {
		cout << *qIter;
	}
	cout << endl;

	cout << "Original V2: ";
	for (qIter = qV2.begin(); qIter != qV2.end(); ++qIter) {
		cout << *qIter;
	}
	cout << endl;

	// Copy v1 with the 'X' characters replaced by 'x'
	vector<char>::iterator qEndOfCopyIter;
	qEndOfCopyIter = replace_copy(qV1.begin(),  qV1.end(), qV2.begin() + 2, 'X', 'x');

	// Output the result vector
	cout << "Resulting V2: ";
	for (qIter = qV2.begin(); qIter != qV2.end(); ++qIter) {
		cout << *qIter;
	}
	cout << endl;

	// Keep the window open
	cin.get();
	return 0;
}

Output

replace_copy() Output
 

© 2007–2024 XoaX.net LLC. All rights reserved.