|
I am trying to use hash_map in C++.NET, but it appears that it can only handle numeric value types?! I am needing to use a hash_map of wstrings/wstrings because the conventional map sorts, while a hash_map doesn't sort (what I need). I use the examples that Microsoft provides, but of course they all use integers as the data type. I can compile with integers and other numeric types, but the second I try to use anything else I get an error in <functional>. It says that it can't convert wstring to size_t! This means that hash_map only takes numbers?! Tell me this can't be true. Aren't these templates?
I was so excited when I saw VC7 had <hash_map> and <rope> (VC6 didn't), but now it looks like it doesn't work :'-(
Is there maybe a way to force map to not sort. I don't know of any sorting functors that actually prevent sorting in a map. The STL docs say to use hash_map to prevent sorting, but I guess that's not possible if my compiler doesn't know how to use templates correctly. Any help would be great! Thanx!
Blizzy
|
|
|
|
|
What does your code look like. Please remember to turn off HTLM tags so your < and > appear in your post.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Thanks for the interest, Christian. Here is the block of code that does work:
hash_map<float,float> intmap;
intmap.insert(pair<float,float>(5,.7) );
and here is what doesn't work:
hash_map<wstring,wstring> intmap;
intmap.insert(pair<wstring,wstring>(L"",L"") );
All I did was change "int" to "wstring" and the values to blank wide strings. The compiler complains about a type cast between wstring and size_t. The compiler points to this block of code in the file xhash as being the problem:
size_t operator()(const _Kty& _Keyval) const
{ // hash _Keyval to size_t value
return ((size_t)_Keyval);
}
Perhaps I am doing something wrong, but I have never had problems with templates before like this. Thanks for your help.
Blizzt
|
|
|
|
|
I suspect you may need to provide the algorithm for getting a key out of a string before you can pass a string in. I'm not sure though, if you're still stuck I'll have a look at home tonight. I've been itching to in any case
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
To use hash_map, you object must be able to provide a hash value. Thus the failure to type cast to an int.
Tim Smith
I know what you're thinking punk, you're thinking did he spell check this document? Well, to tell you the truth I kinda forgot myself in all this excitement. But being this here's CodeProject, the most powerful forums in the world and would blow your head clean off, you've got to ask yourself one question, Do I feel lucky? Well do ya punk?
|
|
|
|
|
To use hash_map, you object must be able to provide a hash value.
I'd suspect this is both right and wrong.
Your key must ...
/Mike
|
|
|
|
|
The compiler complains about a type cast between wstring and size_t.
size_t operator()(const _Kty& _Keyval) const
{
return ((size_t)_Keyval);
}
And indeed it seems the compiler should complain here. You must provide a size_t returning conversion function for wstring.
Now I don't know if that size_t is a map::size_t or ::size_t, but perhaps something like the following can help:
size_t operator size_t(const wstring& w)
{
return your_wstring_to_size_t_hash_function(w);
}
/Mike if this works I wrote it, if not I don't know who wrote it
|
|
|
|
|
Mike Nordell wrote:
if this works I wrote it, if not I don't know who wrote it
I'm a big Paul DeLascia fan myself
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Hi.
Class CProgressCtrl is functionally simple and easy to understand. Nonetheless, I do have one question. How do you calculate the time duration from the start of a job (0% progression) to the completion (100% progression).
For example, let say we have a program that converts all letters in a text file into uppercase.
Original text file:
a
b
c
Output text file:
A
B
C
How do you implement a progression bar such that it displays the completetion animation accurately? I know the example above takes less than a second, but lets just imagine that it takes 10 *or* more.
Thanks,
Kuphryn
|
|
|
|
|
You'd need to get the length of the file and divide it by 100.
It's often difficult to get an exact idea of how long something will take, and often it seems to use more milestones than individual steps. i.e. I can break down my task into 7 sub tasks, I don't know how long most of those will take, so I step the progress counter 7 times instead.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Thanks.
To my understanding, there no accurate way to handle the process completion percentage. We can approximate. Approximating is good enough for some programs.
Kuphryn
|
|
|
|
|
In one of my apps, I have a repetative task that takes a certain amount of time. I need a progress on the individual task and an overall task. What I do is estimate how long the single task will take and actually measure the time it took. That way I update the estimate for the next run and I get a very accurate estimate of the total time.
As your using an example of a file, in a loop you can get the current file pointer, devide it by the length of the file and * 100 to get a current %age position (this sets the progress control). If you also took the system time at the start of the process, you can work out how long it took to get to the current %age and extrapolate to 100%. You can then subtract the elapsed time to get an estimate of time remaining.
Roger Allen
Sonork 100.10016
yet to be identified being from the planet Paltinmoriumbanfrettybooter
|
|
|
|
|
Nice!
Measuring the time someting takes to complete a cycle can be difficult if the job is fast.
Consider Microsoft's defragmentor. I do not think the programmers use the timer measure. Sometimes the progress bar jumps 20% or more.
Kuphryn
|
|
|
|
|
See this article.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hi,
I'm having trouble linking a program. I've installed the latest SDK so I don't think thats the problem. The error I get is
error LNK2001: unresolved external symbol _NetServerEnum@33
I've included lm.h so I don't see what the problem could be.
Thanks for you help
Al
|
|
|
|
|
Are you linking with with netapi32.lib ?
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hi
I would like to change my freeware-software (MFC) to shareware.
Is there any class/tool I can use to let a customer easy register a trial-version after approx. 15 days? How do I generate keys from an E-mail-address?
Thanks
Ola Carlsson
|
|
|
|
|
Ola wrote:
Is there any class/tool I can use to let a customer easy register a trial-version after approx. 15 days?
They do exist, but it's pretty easy to write your own. The way I did it once was to write the day the user had started using my app and the current date in the registry. The current date was used to see if the user had rolled their clock backwards ( by more than one hour, to account for possible daylight savings).
Then I rewrote the same info into a file called msxmtd.dll, or something similarlly official sounding, and put it in windows/system. Then if the user found my registry entries and hacked them, their trial was officially over.
Ola wrote:
How do I generate keys from an E-mail-address?
All sorts of encryption methods exist. Do a google search and I'm sure you'll find tons. Hint - every char has a numeric value.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Hi,
Does anyone now a function/class to check if an e-mail address is valid?
/Ola Carlsson
|
|
|
|
|
Apart from parsing it for form, I don't think that is remotely possible. If I give you cgraus@mydomain.com, how can you tell that mydomain.com knows what to do with this address, except by sending an email to it and seeing if it bounces back ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Christian Graus wrote:
except by sending an email to it and seeing if it bounces back ?
My domain has a catch all, so nothing bounces back, just forwards valid stuff and deletes junk after a while.
Regardz
Colin J Davies
Sonork ID 100.9197:Colin
I think it's interesting that we often qu-ote each other in our sigs and attribute the qu-otes to "The Lounge". --- Daniel Fergusson, "The Lounge"
|
|
|
|
|
Check the return status from the POP3 protocol's USER command. A "+OK" should be returned for valid usernames. This should work even for forwarding POP mailboxes.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Does this mean it would be trivial to write a spam filter, simply by checking all incoming mail for a valid return address ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
It's pretty easy to write, but I doubt it would be efficient, since you'd have to try to establish a connection to the POP server for each unique domain.
Also, it could easily give you bogus results - for example if you received mail from a valid address user@attbi.com , the checker would return "false" since you won't be able to connect to attbi.com 's POP server from outside their domain.
Further, if your domain's POP server had a catch-all account, any username at that domain could be flagged as being valid.
Imho, there's no foolproof way to verify the validity of an email address.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
It's actually totally unworkable. You have no way of knowing what a remote domains POP server is. MX records only point to SMTP mail exchangers, and often these have nothing to do with pop.
Also, very often POP servers are behind firewalls.
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|