473,407 Members | 2,326 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,407 software developers and data experts.

in-place set_intersection

Hi,

Can someone please explain to me WHY the standard does not allow the
input range and the output range to overlap for set_intersection?

I can't see why I can't do this (note sorted vectors, not sets or
anything)

vector<int> x = get_x();
vector<int> y = get_y();

x.erase(
set_intersection(x.begin(),x.end(),
y.begin(),y.end(),
x.begin()),
x.end());

?? I've looked at the g++ implementation, I see no reason why I can't
do this.

thanks
Paul

Aug 29 '05 #1
2 1775
<ha*******@gmail.com> wrote in message
news:11**********************@o13g2000cwo.googlegr oups.com...
Can someone please explain to me WHY the standard does not allow the
input range and the output range to overlap for set_intersection?


Because if the standard did allow the input and output ranges to overlap, it
would have to find a way of specifying the circumstances in which it would
be guaranteed to work and the circumstances in which it wouldn't.

Consider:

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

set_intersection(v.begin(), v.begin()+2, v.begin(), v.begin()+2,
v.begin()+1);

A straightforward implementation will look at v[0] and v[0], see that
they're the same, and copy v[0] to v[1]. Then it will look at (the newly
changed value of) v[1], and v[1], see that they're the same, and copy v[1]
to v[2]. The result will be that all three elements of v will be 1, which
is not correct.
Aug 29 '05 #2
So, one could reliably create a version of set_intersection that works
like unique(), and that would be ok? Where the two input ranges do
not overlap....

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);

vector<int> v2;
v2.push_back(2);

v.erase( my_set_intersection(v.begin(),v.end(),v2.begin(),v 2.end()),
v.end());

where
template <class In1, class In2>
In1 my_set_intersection( In1 xb, In1 xe, In2 yb, In2 ye)
{
return set_intersection(xb,xe,yb,ye,xb);
}

?

Sep 2 '05 #3

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

Similar topics

3
by: Curious Expatriate | last post by:
Hi- I'm completely stumped. I'm trying to write some code that will parse a file and rewrite it with all URLs replaced by something else. For example: if the file looks like this: <b>click...
1
by: JS Bangs | last post by:
I started using PHP's object-oriented stuff a little while ago, which has mostly been a joy. However, I've noticed that they don't seem to echo as I would like. Eg: $this->field = 255;...
5
by: lawrence | last post by:
I've waited 6 weeks for an answer to my other question and still no luck, so let me rephrase the question. I know I can do this: <form method="post" action="$self"> <input type="text"...
0
by: Ben Eisenberg | last post by:
I'm trying to run a php script setuid. I've tried POSIX_setuid but you have to be root to run this. The files are located on a public access unix system and have me as the owner and nobody as the...
2
by: Felix | last post by:
Hi, I've a problem: I want to have the result of my Mysql Query in a Table in my php file. Now I've this: <?
1
by: James | last post by:
What is the best way to update a record in a MYSQL DB using a FORM and PHP ? Where ID = $ID ! Any examples or URLS ? Thanks
1
by: Patrick Schlaepfer | last post by:
Why this code is not working on Solaris 2.8 host. Always getting: PHP Fatal error: swfaction() : getURL('http://www.php.net' ^ Line 1: Reason: 'syntax error' in /.../htdocs/ming2.php on...
1
by: phpkid | last post by:
Howdy I've been given conflicting answers about search engines picking up urls like: http://mysite.com/index.php?var1=1&var2=2&var3=3 Do search engines pick up these urls? I've been considering...
1
by: lawrence | last post by:
What is the PHP equivalent of messaging, as in Java?
3
by: Quinten Carlson | last post by:
Is there a way to conditionally define a function in php? I'm trying to run a php page 10 times using the include statement, but I get an error because my function is already defined. The docs...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

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.