473,245 Members | 1,519 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,245 software developers and data experts.

Copy elements from one STL container to another STL container

How can I copy elements from one STL container to another STL container
if a condition is met and if it find an element fails that condition,
it stops the copying?

I can't use the original copy<> algorithm since it does not take a
binary operation.
And I don't think I can use transform either since it does not stop if
the binary operation return false.

Please correct me if I am wrong or any ideas to my problem.

Feb 16 '06 #1
4 2643
Marko.Cain...@gmail.com wrote:
How can I copy elements from one STL container to another STL container
if a condition is met and if it find an element fails that condition,
it stops the copying?

I can't use the original copy<> algorithm since it does not take a
binary operation.
And I don't think I can use transform either since it does not stop if
the binary operation return false.


You should be able to do that (somewhat inefficiently) with
remove_copy_if. Your predicate would be something like this:

// warning: untested code.
struct predicate {
bool failed;

predicate() : failed(false) {}
bool operator()(X const &x) {
return failed |= !your_real_condition(x);
}
};

I'm not sure whether this is really a good idea though. What you want
doesn't really fit what remove_copy_if is intended to do, so it's
probably better to create a new algorithm that more accurately reflects
what you want.

--
Later,
Jerry.

The universe is a figment of its own imagination.

Feb 16 '06 #2
In article <11**********************@z14g2000cwz.googlegroups .com>,
Ma***********@gmail.com wrote:
How can I copy elements from one STL container to another STL container
if a condition is met and if it find an element fails that condition,
it stops the copying?

I can't use the original copy<> algorithm since it does not take a
binary operation.
And I don't think I can use transform either since it does not stop if
the binary operation return false.

Please correct me if I am wrong or any ideas to my problem.


copy( in.begin(), find_if( in.begin(), in.end(), pred ), out.begin() );

The above will scan the container 'in' and find the first element that
satisfies 'pred', then the copy algorithm will copy from the beginning
of 'in' to the iterator that was found, into 'out'.

This is a two pass process, if that is unacceptable, you will need to
make a new algorithm:

template < typename In, typename Out, typename Pred >
Out copy_unitl( In first, In last, Out first2, Pred fn ) {
while ( first != last && !fn( *first ) )
*first2++ = *first++;
return first2;
}
--
Magic depends on tradition and belief. It does not welcome observation,
nor does it profit by experiment. On the other hand, science is based
on experience; it is open to correction by observation and experiment.
Feb 16 '06 #3
do you know any STL algorithm that stops by a condition rather than a
range?

Feb 16 '06 #4
In article <11**********************@g43g2000cwa.googlegroups .com>,
"Diego Martins" <jo********@gmail.com> wrote:
do you know any STL algorithm that stops by a condition rather than a
range?


find_if

--
Magic depends on tradition and belief. It does not welcome observation,
nor does it profit by experiment. On the other hand, science is based
on experience; it is open to correction by observation and experiment.
Feb 16 '06 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: Nobody | last post by:
The requirement that STL container elements have to be assignable is causing me a problem. Consider a class X which contains both const and non-const data members: class X { public: X(const...
9
by: Gunnar G | last post by:
Is there anything like vector in STL, that performes deep copy of the elements it contains? I hope this will appear in future releases of STL :)
3
by: Nudge | last post by:
I am slightly confused, so please keep that in mind if I make only little sense. Assume I have a base class: class Base { ... }; and two derived classes: class Int : public Base { ......
14
by: Jinjun Xu | last post by:
Hi, I have an array and I want to adjust the size (remove some elements). I use the following code. Can you help me to check whether it's correct. ////////////// start int *p1 = new int; ...
2
by: Liming | last post by:
hello, I have the follwoing code <div id="detailtable" style="visibility:hidden"> <table id="detailtablehidden" width="100%" border="0"> .... </table> </div>
7
by: vj | last post by:
Hi! I recently came across this intresting behaviour shown by Visual C++ 6.0 compiler regarding Copy Constructors. Please tell me that is this the standard behaviour shown by all compilers or its...
2
by: John | last post by:
I have a priority_queue that stores its elements in a vector. What is the fastest way to copy all the elements of the priority queue to this vector. Right now I use pop() to pop all the elements...
35
by: dragoncoder | last post by:
Just a simple theoritical question to the experts. What was the rationale behind making STL containers follow copy semantics rather than reference semantics. References almost always make things...
7
by: Soumen | last post by:
I need to write code to copy unique elements in from a sequence container (say vector) to a set (or another sequence container will do). Is following code efficient? template <class T> void...
0
by: abbasky | last post by:
### Vandf component communication method one: data sharing ​ Vandf components can achieve data exchange through data sharing, state sharing, events, and other methods. Vandf's data exchange method...
2
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 7 Feb 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:30 (7.30PM). In this month's session, the creator of the excellent VBE...
0
by: stefan129 | last post by:
Hey forum members, I'm exploring options for SSL certificates for multiple domains. Has anyone had experience with multi-domain SSL certificates? Any recommendations on reliable providers or specific...
0
Git
by: egorbl4 | last post by:
Скачал я git, хотел начать настройку, а там вылезло вот это Что это? Что мне с этим делать? ...
0
by: MeoLessi9 | last post by:
I have VirtualBox installed on Windows 11 and now I would like to install Kali on a virtual machine. However, on the official website, I see two options: "Installer images" and "Virtual machines"....
0
by: DolphinDB | last post by:
The formulas of 101 quantitative trading alphas used by WorldQuant were presented in the paper 101 Formulaic Alphas. However, some formulas are complex, leading to challenges in calculation. Take...
0
by: Aftab Ahmad | last post by:
Hello Experts! I have written a code in MS Access for a cmd called "WhatsApp Message" to open WhatsApp using that very code but the problem is that it gives a popup message everytime I clicked on...
0
by: Aftab Ahmad | last post by:
So, I have written a code for a cmd called "Send WhatsApp Message" to open and send WhatsApp messaage. The code is given below. Dim IE As Object Set IE =...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.