|
Thanks manish,
I do not quite understand this statement in the thread "in C++, string literals are l-values.", any comments?
regards,
George
|
|
|
|
|
did you read this stetement :
"l-values are something that can be at the right side of an '='"
It says that if we write x = 10; then x will be l-value(left side value)
In c++, we can not give number as variable name, It always be a string only.
So in C++, string literals are l-values.
Now i think you got it
Manish Patel.
B.E. - Information Technology.
|
|
|
|
|
Thanks Manish,
I am confused. You mentioned,
--------------------
l-values are something that can be at the right side of an '='
--------------------
l-value...right side? Could you confirm that?
regards,
George
|
|
|
|
|
manish.patel wrote: t says that if we write x = 10; then x will be l-value(left side value)
In c++, we can not give number as variable name, It always be a string only.
So in C++, string literals are l-values.
Your argument is wrong.
In the expression x = 10; the term x is an identifier, NOT a string literal (a string literal is, for instance, "foo" ). See [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Thanks CPallini,
What do you think of whether string literal is lvalue or rvalue? I think it is only rvalue, do you agree?
regards,
George
|
|
|
|
|
George_George wrote: What do you think of whether string literal is lvalue or rvalue? I think it is only rvalue, do you agree?
Yes, of course. Did you ever see a string literal on the left of an assignment expression?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Thanks CPallini,
I agree with your reply. I am studying the link as people mention before,
http://www.velocityreviews.com/forums/t279868-what-is-lvalue.html[^]
in post #2, what do the following statements mean? Especially the additional [2] after "str" and ["str"] after 1? Any ideas?
* ( ( char * ) & var ) = "str"[2];
int & varref = var;
varref = 1["str"];
regards,
George
|
|
|
|
|
George_George wrote: in post #2, what do the following statements mean? Especially the additional [2] after "str" and ["str"] after 1? Any ideas?
George_George wrote: * ( ( char * ) & var ) = "str"[2]; // * ((char *)&var) too
it is nothing but subscripting an array, here "str" is an constant array of string.
it is same as
const char * const szText = "str"; or const char szText[] = {"str"};
* ( ( char * ) & var ) = szText[2];
George_George wrote: varref = 1["str"]; // varref is also an lvalue
"the subscript operator [] is interpreted in such a way that E1[E2]
is identical to *((E1)+(E2))" from C++ std.
I think 1["str"] is tricking the above expression to *((1) + (pointer to "str")) that is same as "str"[1] which evaluates to *((pointer to "str") + (1)). because adding pointer to index and index to pointer is same.
|
|
|
|
|
Great Rajkumar!!
Cool reply. For this discussion,
http://www.velocityreviews.com/forums/t279868-what-is-lvalue.html[^]
It is mentioned,
struct C
{
C& operator=(int);
};
C() = 5;
Here is the related description,
--------------------
True.
But there are compilers (eg VC++) that do allow to bind non-const references to
temporary as an extension of the standard.
IMO, a conforming compiler should reject the code.
--------------------
I can not see in above code there occurs "bind non-const references to temporary". Do you see it occurs?
regards,
George
|
|
|
|
|
Hello everyone,
I want to learn more about deque, and previously I only have basic concept and samples about deque as a double-ended queue.
My questions are,
1. How it is implemented internally for the performance optimization for get front and end elements? Elements are stored in an array or linked list or?
2. Are there any documents about how to use deque effectively and efficiently (i.e. good patterns and anti-patterns of deque)? I have searched MSDN and Google and only found some sample samples. Any experience sharing or recommended articles?
thanks in advance,
George
|
|
|
|
|
STL has deque implementation, "#include <deque>" and use the std::deque, i think you will get the answers for your question.
|
|
|
|
|
Thanks Rajkumar,
I can debug into it. But the symbols looks -- not quite user friendly.
Just want to find out how it is implemented internally and some best practices about how to use it. Any ideas?
regards,
George
|
|
|
|
|
1 - from wikipedia[^] :
"There are at least two common ways to efficiently implement a deque: with a modified dynamic array or with a doubly-linked list. For information about doubly-linked lists, see the linked list article."
2 - deque is a very simple data structure, there is no good or bad patterns to use it, you simply add to the front or back of the queue.
also see this excellent article : http://www.codeproject.com/KB/stl/vector_vs_deque.aspx[^]
|
|
|
|
|
What's the difference between vector and dequeue ?
I did not read your post carefully.
Maxwell Chen
modified on Saturday, March 1, 2008 7:54 AM
|
|
|
|
|
Hi Maxwell,
I think you can refer to The C++ Standard Library book, section 6.3, and there is a complete list of comparison between deque and vector.
regards,
George
|
|
|
|
|
Thanks!
Maxwell Chen
|
|
|
|
|
Thanks Maximilien!
The recommended reading is great!
I am also reading the book -- The C++ Standard Library, and here is the description of the comparison between vector and deque. Why there is one more level of indirection in deque?
--------------------
The internal structure has one more indirection to access the elements, so element access and iterator movement of deques are usually a bit slower.
--------------------
regards,
George
|
|
|
|
|
dear all
my problem is as follows:
double T;
int halfSize;
int sumMask=0;
int maskNum[5]={0};
double sigma[5]={0.9,1.3,1.65,1.8,2};
int maskSize;
T=0.66;
for (int k=0;k<5;k++)
{
halfSize = static_cast<int>(sqrt(-log(T))*2*pow(sigma[k],2));
maskSize = 2*halfSize + 1;
maskNum[k] = maskSize;
int *maskX;
double *mask;
maskX = new int[maskSize];
mask = new double[maskSize];
for (int j=0;j<maskSize;j++)
{
maskX[k,j]=maskSize/2-(2*k+2-j);
mask[k,j]=exp(-pow(maskX[k,j],2)/2*pow(sigma[k],2));
}
}
error C2668: 'pow' : ambiguous call to overloaded function
i really couldn't find where is problem for pow function. anyone give me suggestion and help me. thanks
Li Zhiyuan
modified on Thursday, February 28, 2008 8:48 PM
|
|
|
|
|
Try a 2.0 instead of 2 in the pow() function. There isn't a pow() that uses an integer as an argument but there are ones for floats and doubles. The compiler doesn't know which one to convert the int to.
|
|
|
|
|
Where do I store information in the registry under VISTA which should remain accessible and modifyable regardless of which user or configuration is active. In XP I stored under:
HKEY_LOCAL_MACHINE/Software/Softguard/...
Because of the nature of the businesses we cater for, we have never supported the MS Security Model. All machines on the LAN would be configured as having open access.We intend that Vista Machines would run under the same modus operandus.
regards,
Bram van Kampen
|
|
|
|
|
To access registry under Vista, the applications should have elevated right, A.K.A. the UAC issue. Therefore to run your application with a limited user privilege might have problem.
Maxwell Chen
|
|
|
|
|
Hi,
The Software I write is independent of the Microsoft Security Model. Typically all terminals installed under XP give all users administrator level control to the entire network. BTW None of the networks are connected to the Internet. Does that mean I have nothing to worry about, and that All will work as Advertised, or do I need to do something additional when I detect a Vista installation.
Regards,
Bram van Kampen
|
|
|
|
|
Bram van Kampen wrote: The Software I write is independent of the Microsoft Security Model. Typically all terminals installed under XP give all users administrator level control to the entire network. BTW None of the networks are connected to the Internet. Does that mean I have nothing to worry about, and that All will work as Advertised, or do I need to do something additional when I detect a Vista installation.
1. Under Vista, any ordinary program applications launched by mouse double-click or by pressing [Enter] key will be running in limited-user mode by default, even the user is of the "Administrators" group.
2. It has nothing related with network connections.
3. To make a program application have elevated privileges when being launched, we have to embed a manifest into the executable file to deal with UAC of Vista.
4. A manifest file is a source file written in XML syntax. To embed a manifest into an executable, you need to use "MT.exe" tool come with Visual C++ or SDK installation.
5. Here is the article about manifest and UAC of Vista. Making your application UAC aware[^]. And you may need to read more related articles. See those further readings in this article. And you may also search with Google for more source.
6. If you use the code sample of manifest in above article, the application might have problem under WinXP. To make it compatible with WinXP, you need to alter the syntax. See the "ms_asmv2" stuff in this article: Create and embed an application manifest[^].
7. This article talks even more about UAC: Understanding and configuring UAC in Vista[^].
Maxwell Chen
|
|
|
|
|
Hi, Thanks.
Still very complicated for just wanting to keep things working like they always worked. I found an article by someone who appears to have clobberred the entire issue with some judicious ASM Code.
http://www.codeproject.com/KB/install/acl_common_data.aspx[^]
I tried it on my Test machine and it appears to work a dream. Many kind thanks though for the explanation and links about what I can only describe as Microsoft's Solution looking for a problem.
Thanks Again,
Bram van Kampen
|
|
|
|
|
Bram van Kampen wrote: I found an article by someone who appears to have clobberred the entire issue with some judicious ASM Code.
http://www.codeproject.com/KB/install/acl_common_data.aspx[^]
I tried it on my Test machine and it appears to work a dream.
Cool! Thanks!
Maxwell Chen
|
|
|
|