|
Sorry ,but C++ types runtime information is very limited.You could only get C++ clas instance type like this sample but calling a methods at runtime is not possible in general.
Life is a stage and we are all actors!
|
|
|
|
|
As other said before, this is not possible to do in C++. However, if you explain what exact situation you are trying to handle we might be able to suggest you an appropriate solution.
|
|
|
|
|
May be this is not what you want, but qt c++ framework do that.
|
|
|
|
|
Hi, is there any technics (owner draw class, function, subclass method and so on) to change backgroud color of datetimecontrol
Thank you
viliam
|
|
|
|
|
Check out the WM_CTLCOLOR , and related, messages.
If that does not work, you might look at the DTM_SETMCCOLOR message. Or, subclass the control and handle the WM_ERASEBKGND and WM_PAINT messages.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
WM_CONTROL is not called for this type of control
viliam
|
|
|
|
|
viliam wrote: WM_CONTROL is not called for this type of control
I've not ever heard of that message. Is it new?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Sorry, my typing error. I should be WM_CTLCOLOR
viliam
|
|
|
|
|
viliam wrote: Sorry, my typing error.
Don't "type" your code here. Please copy and paste!
Workout progress:
Current arm size: 14.4in
Desired arm size: 18in
Next Target: 15.4in by Dec 2010
Current training method: HIT
|
|
|
|
|
Hi,
Does anyone know how to load a map of maps? I've declared the map of maps as follows:
map<double,map<double,double>> a;
As a simple example, I'd like to load the following (in reality I'll be loading this format for nearly 500,000 entries):
0.0 1.57 2.65
0.5 0.00 3.21
1.0 6.52 0.00
1.5 0.17 4.54
The first column is the key (it is time in seconds).
Thanks,
|
|
|
|
|
you're using a map to store a matrix ?
Watched code never compiles.
|
|
|
|
|
|
For storing a matrix like this wouldn't a better representation be:
std::map< std::pair<unsigned, unsigned>, double > matrix;
and you can address the elements as:
matrix[ std::make_pair( 0, 0 ) ] = 0.5;
Cheers,
Ash
|
|
|
|
|
Use the Matrix[^] class from the Boost library.
|
|
|
|
|
Hi,
I took a look at boost, but it didn't seem to have methods for finding values in the matrix or deleting rows, etc.
|
|
|
|
|
It has begin() and end() methods that return iterators. Those can be used to find.
For deleting, it has an erase_element() method. Put that in a loop to delete an entire row.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Hi David,
So could I find, for example, a zero in a given column using this technique? How would you use .begin() and .end() to do this?
Thanks,
|
|
|
|
|
b-rad311 wrote: So could I find, for example, a zero in a given column using this technique?
At first glance, it appears not, however, I've never used it.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
How about something like:
struct entry
{
double key;
double val1;
double val2;
};
vector<entry> entries.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Man who follows car will be exhausted." - Confucius
|
|
|
|
|
Hi David,
Thanks for replying. I'm trying to shy away from vector usage because, due to the large amount of data, vector storage and usage (particulary push_back) are killing the efficiency. So I'm trying to experiment with other methods such as map of maps.
|
|
|
|
|
Hi,
std::vector::push_back is only a problem if the internal storage for the vector has to change. If you do a std::vector::resrve to an estimate of the the maximum size of the vector before doing anything else it'll speed up push_back no end.
On a related point, lookup in a map of maps with loads of entries is going to be pretty slow...
Cheers,
Ash
|
|
|
|
|
b-rad311 wrote:
Thanks for replying. I'm trying to shy away from vector usage because, due to the large amount of data, vector storage and usage (particulary push_back) are killing the efficiency. So I'm trying to experiment with other methods such as map of maps.
maps actually begin to be inefficient at large numbers too. Remember that a map is internally stored as a binary tree in most implementations. This is highly efficient method of searching since it always becomes the equivalent of a quick search through your data to find any one node. However, the depth of the tree begins to slow down all operations as well. As mentioned, if you reserve space on a vector you can achieve high speed. Vector reallocates at 50% above your last block size when it runs out of memory, then shifts the contents over to a new array that is larger. It is the reallocation and move that occupies most of the time of the push_back.
There are also alternatives, depending on what you want to achieve. I use pre-allocated vectors as large hash-tables, with the appropriately speedy hash algorithm you can beat a map on very large data sets. It all comes down to need and desired performance.
so you spoke of a time key, but what are you storing and how do you need to access it?
_________________________
John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
Shhhhh.... I am not really here. I am a figment of your imagination.... I am still in my cave so this must be an illusion....
|
|
|
|
|
Hello,
Thanks for replying. I am storing forces and moments (so double or long doubles) for an engineering application. At times, there could be as many as 1 million entries that need to be stored. I need to be able to quickly locate zeroes and eliminate them along with all other values in the corresponding "rows".
modified on Thursday, May 27, 2010 9:56 AM
|
|
|
|
|
b-rad311 wrote: Thanks for replying. I am storing forces and moments (so double or long doubles) for an engineering application.
You definitely don't want a map of maps because it doesn't sound like you have two indexes. You could use a map of a structure, or pair, and use the one index of time. However... at one million entries you are going to start noticing the significant hit of the search through the map.
start with a quick review of performance considerations on STL:
GDC 2001 Round Table Report[^]
Custom STL Allocators (Power Point Presentation)[^]
Common Performance Mistakes in Games (Power Point Presentation)[^] (this is my favorite)
Ignore that the latter is for the Xbox, the issues are the same. Games require performance, performance on STL containers are a common problem, but usually because of a misunderstanding of how they work. When do you make your own? why? how? do you leverage the existing STL work when you do? (yes!!)
If your time is sampled at a constant rate you directly turn time into an index, so I would use a vector, but I would pre-allocate memory with reserve such that the allocation occurs only once at the beginning and there after, random access direct memory speed will beat anything hands down.
If you sample rate is not constant, and you need random access over linear reading, you can consider an STL form of a Hash when you get into a large data sets. There are still two possibilities: one-time hash, or bucket hash. One-time hashes are hard to set up, usually meaning you allocate more memory than you need by 50% in a vector, then generate an index from your time using a mathematical hash function which converts your key directly to an index value. If you choose your hash function well for your key-type, this works well, but requires more memory. If you choose your hash function poorly, your tend to reallocate when you hit duplicate keys to the a given index and there goes your performance down the tubes again.... A bucket hash is kind of compromise. You use a smaller vector as the hash, but duplicates are stored in individual lists or maps (the buckets).
The bad news is that hashes do not have a really good way of accessing the values in order, it is strictly a random access method. If you need linear reads, I would go with a reserve value on a vector to improve vector performance. You can also do the same with a map, but maps allocate blocks as you go, without recycling old allocations, so it usually isn't necessary.
I used to have a table of STL performance values for each key function (push back, push front, insert, find, iterators, etc), but I can't seem to find it with google at the moment and I have to jump back to my work for a while. Think over what you have, how you intend to read it, how you can read it too.
Good luck!
_________________________
John Andrew Holmes "It is well to remember that the entire universe, with one trifling exception, is composed of others."
Shhhhh.... I am not really here. I am a figment of your imagination.... I am still in my cave so this must be an illusion....
|
|
|
|
|
El Corazon,
Thanks for all the info.
|
|
|
|
|