comparing and deleting derived classes

Hi,

I am creating a program that stores cities with their geographical points so that I can measure the distance between them. these cities will be stored in derived classes using vectors. ATM I'm having a hard time to try and code ways to prevent a city from being entered twice, I imagine you would use a find() function ? and also how can I delete a city (a specific derived class) ?

the base class will be structured something like this:

class city
{
double latitude, longitude;
char name[255];

};

revealing my whole program will be too much to read and I'm only expecting some sort of guidance. I'm quite new with vectors.
Mmmm, well if you are using the default comparison operator (you might want to define it just in case), then you can use an std::set instead of an std::vector. Read:

http://www.cplusplus.com/reference/stl/set/
Why do you need derived classes?

the function 'count' should be better that 'find' to check if a value was already entered.
In order to use it, you should provide a == operator for 'city'
eg:
1
2
3
4
bool operator == (const city &a, const city &b)
{
        return !strcmp(a.name,b.name) && a.latitude==b.latitude && a.longitude==b.longitude;
}


http://www.cplusplus.com/reference/algorithm/count/
Hi bazzy,

I tried implementing the example code above that you showed but I get these errors...


in function int main()':
line 1 : expected `,' or `..' before '&' token
line 3 : a function-definition is not allowed here before '{' token
line 3 : expected `,' before '{' token
[Build Error] [main.o] Error 1

what's wrong ??
Couple of things:

1) name should really be a std::string instead of a char array;
2) you can't compare doubles for equality;
3) the default operator== should then suffice;
4) both count() and find() are O(n) so neither is really any better than the other.

And why do you need derived classes?
you guys are right, there is no need of derived class since each city will have the same member variables.
Topic archived. No new replies allowed.