|
i still use VC++5.0 maybe that's the problem
by the way, doesn't work with a local one neither
Greetz
Jens
|
|
|
|
|
I just made that var local as a quick edit to see if I could get that code fragment to compile in isolation, in a dialog box that I already had compiling ok. I was wondering if something else in your file might be causing the errors. It might be worth (if you haven't already done so) trying to get this fragment to compile on its own without any other unnecessary code. I can't reproduce VC5 easily here, I'm afraid
Debbie
|
|
|
|
|
Well, i've just tried it out with another empty project, seems like VC++5.0 doesn't seem to like CListCtrl :S
Thanks for the effort tho
|
|
|
|
|
Hi everybody !!
I need to make a Fast Fourier Transform of a signal. Does anybody knows where I can find documentation and source code that implement this (just to have examples of FFT algorithms) ??
Thanks !
|
|
|
|
|
I have both the FFT and FHT (Fast Hartley Transform) in C sources. How do I send them to you?
|
|
|
|
|
Nice !!
You can send them on cedric_moonen@hotmail.com in a ZipFile.
Thanks a lot !!
|
|
|
|
|
please joao i want this project
|
|
|
|
|
|
|
|
How do i change the wall paper programatically ??Is there any registry key for it ??I could not locate it ..Or is there any API for it .
|
|
|
|
|
I think i got the answer ..The following registry key has to be chamged
HKEY_CURRENT_USER\Control Panel\Desktop -string (Wallpaper)
Windows converts the JPEG file(selected as BMP) into BMP and places it in one of IE folders
|
|
|
|
|
Friends,
When my program starts, I am storing various unique integer values in std::vector maximum 150 in numbers. All values stored are guaranteed to be unique.
Later at any stage, my program receive certain amounts of numbers from the server, and i need to compare each number with the numbers stored in the vector, to find whether this number is already present or not.
The problem is that for comparison each time i need to iterate 150 times, and if the server sends too many numbers then i need to iterate 150 times for each of these numbers comparison.
For comparison i am using vector iterator and moving it from beginning to end of vector, extract value and then compare it.
Is there any efficient way doing that ??? Is there any other container available which provides the function like find() which automatically do lookups and tells me whether the value is already present or not ???
|
|
|
|
|
If you're not adding to the list often, you may want to keep the list sorted, and use binary search. Or you can use std:set, which impliments a binary search because it keeps the data as a sorted tree.
Christian
NO MATTER HOW MUCH BIG IS THE WORD SIZE ,THE DATA MUCT BE TRANSPORTED INTO THE CPU. - Vinod Sharma
Anonymous wrote:
OK. I read a c++ book. Or...a bit of it anyway. I'm sick of that evil looking console window.
I think you are a good candidate for Visual Basic. - Nemanja Trifunovic
|
|
|
|
|
I guess you could use a hash table of some kind, but I don't have any good samples on that now. You could also try using a std::map. There is a sample in MSDN if you look at map::find().
|
|
|
|
|
std::set does exactly what you are looking for.
|
|
|
|
|
I vote for keeping the std::vector but sorting it after you are done. Then using lower_bound to try to find the integer. It should be the fastest and less memory intensive option. However, if your list of 150 integers are not static, I would go with a std::set.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Hi!
As the other answers you should use std::map or std::set . However, if you are using VC 7.0 you can take advantage of hash_set that may give you better look up times.
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
Alex wins by a factor of 4. People can see my tests in my "geek out" reply.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Hello,
STL 'std::set' best suits your application based on what you have explained.
'std::set' STL has been particularly designed to hold unique elements of a particular datatype. As your container needs to hold only unique values , you can exploit the 'std::set' STL efficiently. It will also work faster and more efficiently that a vector implementation for your usage since a 'std::set' is specially designed to hold unique elements and a customized find() function exists for 'std::set' that you can use instead of using the generic 'find()' function. This also adds to efficiency.
I've given a small code snippet here for you:
-------------------------------------------------
#include <set>
#include <iostream>
using namespace std;
int main()
{
set<int> set1;
for(int i = 0; i < 10; ++i)
set1.insert(i);
cout << "Set contains: ";
for(set<int>::iterator set_iter = set1.begin(); set_iter != set1.end(); ++set_iter)
cout << *set_iter << " ";
cout << endl << endl;
int value_to_be_searched = 5;
set<int>::iterator si = set1.find(value_to_be_searched);
if(si != set1.end())
cout << "Value " << value_to_be_searched << ": found!!" << endl;
else
cout << "Value " << value_to_be_searched << ": not found!!" << endl;
value_to_be_searched = 14;
si = set1.find(value_to_be_searched);
if(si != set1.end())
cout << "Value " << value_to_be_searched << ": found!!" << endl;
else
cout << "Value " << value_to_be_searched << ": not found!!" << endl;
return 0;
}
-------------------------------------------------
Bye,
Chaitanya Atreya.
Whenever I hear someone sighing "Life is hard",
I'm tempted to ask "Compared to what?".
|
|
|
|
|
I geeked out, I had to test which is actually the fastest.
For 150 elements, 100000 iteration:
Sorted Vector: 2641ms
Set: 1781ms
Map: 1828ms (most runs had map running as fast as set)
hash_set: 563ms
For 15000 elements, 1000 iteration:
Sorted Vector: 3156ms
Set: 3016ms
Map: 3000ms
Hash Set: 593ms
For 150000 elements, 100 iterations:
Sorted Vector: 3546ms
Set: 3547ms
Map: 3547ms
Hash Set: 906ms
Here is the program to test it: (notice I am using the crappy timers, so 50ms error should be taken into account.)
#include "stdio.h"
#include "windows.h"
#include <vector>
#include <set>
#include <map>
#include <hash_set>
#include <algorithm>
#define ITEM_COUNT 1500000
#define LOOP_COUNT 10
int main (int argc, char* argv[])
{
int i, j, k;
DWORD dw;
std::vector <int> v;
std::set <int> s;
std::map <int, int> m;
std::hash_set <int> h;
for (i = 0; i < ITEM_COUNT; i++)
{
v .push_back (i * 2);
s .insert (i * 2);
m [i * 2] = i * 2;
h .insert (i * 2);
}
std::sort (v .begin (), v .end (), std::less<int> ());
dw = GetTickCount ();
k = 0;
for (i = 0; i < LOOP_COUNT; i++)
{
for (j = 0; j < ITEM_COUNT * 2; j++)
{
std::vector <int>::iterator ix = std::lower_bound (v .begin (), v .end (), j);
if (ix != v .end () && (*ix) == j)
k++;
}
}
printf ("Vector: %d (%d)\n", GetTickCount () - dw, k);
dw = GetTickCount ();
k = 0;
for (i = 0; i < LOOP_COUNT; i++)
{
for (j = 0; j < ITEM_COUNT * 2; j++)
{
std::set <int>::iterator ix = s .find (j);
if (ix != s .end ())
k++;
}
}
printf ("Set: %d (%d)\n", GetTickCount () - dw, k);
dw = GetTickCount ();
k = 0;
for (i = 0; i < LOOP_COUNT; i++)
{
for (j = 0; j < ITEM_COUNT * 2; j++)
{
std::map <int, int>::iterator ix = m .find (j);
if (ix != m .end ())
k++;
}
}
printf ("Map: %d (%d)\n", GetTickCount () - dw, k);
dw = GetTickCount ();
k = 0;
for (i = 0; i < LOOP_COUNT; i++)
{
for (j = 0; j < ITEM_COUNT * 2; j++)
{
std::hash_set <int>::iterator ix = h .find (j);
if (ix != h .end ())
k++;
}
}
printf ("Hash Set: %d (%d)\n", GetTickCount () - dw, k);
return 0;
}
Hash map wins by a longshot. Not only does it support dynamic containers well (which is a problem with the sorted vector), but searches are very fast.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Hi everybody...I want to make barcode image generator application. Can anybody help me ?????
Thanks.
C.R.Naik
|
|
|
|
|
There's 5 articles of the stuff starting here
|
|
|
|
|
|
On the first PC I call the send() function to send n bytes to the second pc.
The second PC will receive the FD_READ message to read the data. I will use the recv function to read the n bytes.
But, is there a way to get the number of bytes that the first pc have sended (I want to know the value of n )?
I want to create a buffer with char* p = new char[n]; to store all the data!
Daniel
---------------------------
Never change a running system!
|
|
|
|