<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkICR3w-eCp7ImA9WhRbF00.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738</id><updated>2012-02-08T13:42:46.250Z</updated><category term="Mutex" /><category term="Challenging Problems" /><category term="Volatile" /><category term="Assignment Operator" /><category term="Derived Class" /><category term="Multiset" /><category term="Algorithms set_union" /><category term="Cast" /><category term="Cin" /><category term="Find First Not Of" /><category term="String" /><category term="Procedures" /><category term="Const correctness" /><category term="Environment Variables" /><category term="Interview Questions" /><category term="Const Functions" /><category term="Operator Overloading" /><category term="String Erase" /><category term="Design Pattern Factory Method" /><category term="New and Delete" /><category term="Friend" /><category term="Priority Queue" /><category term="Operator Precedence" /><category term="Print Formatting" /><category term="Scope" /><category term="Goto" /><category term="Find If" /><category term="Switch Case" /><category term="Debugging" /><category term="Design Pattern Bridge" /><category term="Design Pattern Proxy" /><category term="SizeOf" /><category term="Class" /><category term="Pass by Reference" /><category term="Redefinition" /><category term="Deep Copy and Shallow Copy" /><category term="Design Pattern Decorator" /><category term="Pointers" /><category term="Forward Declarations" /><category term="Memory Leaks" /><category term="Divide By Zero" /><category term="Design Pattern Prototype" /><category term="Flushing Buffers" /><category term="Design Pattern Facade" /><category term="Templates" /><category term="Algorithms lower_bound" /><category term="References" /><category term="Maps" /><category term="Const Pointer" /><category term="Array" /><category term="Linked Lists" /><category term="Bitwise Operators" /><category term="Copy" /><category term="STL" /><category term="Socket" /><category term="Smart Pointers" /><category term="Sleep" /><category term="Command-line arguments" /><category term="Union" /><category term="Virtual Destructor" /><category term="Instantiation" /><category term="Design Pattern Abstract Factory" /><category term="Temporary Objects" /><category term="String Size" /><category term="Exceptions" /><category term="Terminology" /><category term="Event" /><category term="Design Pattern Builder" /><category term="Multimap" /><category term="Sorting" /><category term="Queue" /><category term="String Replace" /><category term="Virtual Inheritance" /><category term="BitString" /><category term="Const References" /><category term="Directory Operations" /><category term="File Operations" /><category term="Function Pointers" /><category term="Design Pattern Flyweight" /><category term="Asynchronous and Synchronous" /><category term="Callbacks" /><category term="Functors" /><category term="Pure Virtual" /><category term="Algorithms sort" /><category term="Date and Time" /><category term="Auto Pointer" /><category term="Labels" /><category term="String Split" /><category term="Const Cast" /><category term="Hexadecimal" /><category term="Client Server" /><category term="Break" /><category term="Typeid" /><category term="Constructor" /><category term="Static Cast" /><category term="Typedef" /><category term="General" /><category term="Invariants" /><category term="OOPS" /><category term="Mathematical Operations" /><category term="Preprocessor" /><category term="Multi-Threading" /><category term="Design Pattern Singleton" /><category term="Dynamic Cast" /><category term="Macro" /><category term="Design Pattern Observer" /><category term="Virtual" /><category term="C String" /><category term="Design Pattern Adapter" /><category term="Void" /><category term="Test and Debug" /><category term="Algorithms set_intersection" /><category term="Design Patterns" /><category term="Variadic Functions" /><category term="Size" /><category term="Lists" /><category term="Inheritance" /><category term="Pair" /><category term="Arguments" /><category term="Copy Constructor" /><category term="Windows Registry" /><category term="Design Pattern Composite" /><category term="Reinterpret Cast" /><category term="Find" /><category term="HexString" /><category term="Abstract Class" /><category term="Size_t" /><category term="Destructor" /><category term="Cout" /><category term="C++0x" /><category term="Transform" /><category term="Mutable" /><category term="Memory Management" /><category term="Thread Synchronisation" /><category term="Search" /><category term="Algorithms" /><category term="Algorithms equal_range" /><category term="Return from Functions" /><category term="Algorithms copy" /><category term="Timers" /><category term="Functions" /><category term="Set" /><category term="Pointer to Const" /><category term="Algorithms upper_bound" /><category term="Algorithms min" /><category term="Overloading" /><category term="Wide Charachters" /><category term="Auto Variables" /><category term="BitSets" /><category term="String Length" /><category term="Compiler Warnings" /><category term="Singleton" /><category term="Design Pattern State" /><category term="Typename" /><category term="Order of Evaluation" /><category term="Reverse Engineering" /><category term="Interface Class" /><category term="Base Class" /><category term="String Convert" /><category term="Memory Allocation" /><category term="Enum" /><category term="Register Variables" /><category term="String Stream" /><category term="Vector" /><category term="Struct" /><title>Advanced C++ with Examples</title><subtitle type="html">This blog aims to explain Advanced C++ concepts with simple examples. I found that sometimes programmers can learn the concepts very easily with a well written and commented code rather then going through hundreds of book pages.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://advancedcppwithexamples.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>152</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AdvancedCWithExamples" /><feedburner:info uri="advancedcwithexamples" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEYCQX8-eip7ImA9WhZbE0s.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-2016454834612168438</id><published>2011-06-18T02:56:00.000+01:00</published><updated>2011-06-18T02:56:00.152+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T02:56:00.152+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>On vacation from coding</title><content type="html">&lt;a href="http://2.bp.blogspot.com/-r6f4v3t9jU8/TfYlPJ8ds6I/AAAAAAAADOc/zr5DRsjMgp4/s1600/vacacation.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-r6f4v3t9jU8/TfYlPJ8ds6I/AAAAAAAADOc/zr5DRsjMgp4/s400/vacacation.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5617718527489061794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I am taking a vacation from coding and as a result, I may not be updating the blog for some time to come. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will still try my best to moderate the comments and reply to them as far as possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are interested in C++, I recommend that you join the &lt;a href="http://www.linkedin.com/groups?mostPopular=&amp;amp;gid=86782"&gt;C++ professional group&lt;/a&gt; on Linkedin and there are lots of interesting discussions going on, on a regular basis. There is also the &lt;a href="http://advancedcppwithexamples.blogspot.com/p/other-websites-with-c-code-examples.html"&gt;other websites&lt;/a&gt; page that links other interesting sites on C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the time being, Adieu!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-2016454834612168438?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wc1Gi2oooCSqLtFELdhufxfGhBw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wc1Gi2oooCSqLtFELdhufxfGhBw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wc1Gi2oooCSqLtFELdhufxfGhBw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wc1Gi2oooCSqLtFELdhufxfGhBw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/t1GEdMR3EyE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/2016454834612168438/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/06/on-vacation-from-coding.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2016454834612168438?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2016454834612168438?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/t1GEdMR3EyE/on-vacation-from-coding.html" title="On vacation from coding" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-r6f4v3t9jU8/TfYlPJ8ds6I/AAAAAAAADOc/zr5DRsjMgp4/s72-c/vacacation.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/06/on-vacation-from-coding.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IMQX8zcSp7ImA9WhZbEE8.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-4736029592081615371</id><published>2011-06-14T06:33:00.004+01:00</published><updated>2011-06-14T06:33:00.189+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-14T06:33:00.189+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Debugging" /><title>When true != true</title><content type="html">If we define a boolean variable, say: &lt;div&gt;&lt;span class="Apple-style-span" &gt;bool&lt;/span&gt; xyz;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;then when we have to do some kind of a comparison we may do this as follows:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz == &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I used to be a new programmer, I used to always do this as follows:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(&lt;span class="Apple-style-span" &gt;true&lt;/span&gt; == xyz)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think the way I did it is more robust and less error prone because you can by mistake do as follows:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz = &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;)  //Single = instead of ==&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem with my approach is that the code readability is affected and most people hate to see code like this. Instead, I started doing what normal people would do but making sure that I always use '==' and not '='.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now some of you may be thinking why not:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;True, in case of Boolean this is a simplest way to do it and I had personally no problem with it until recently. While reviewing some code, I noticed that an engineer had changed a piece of code from:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz == &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;)  to &lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Initially I thought that it may be that he did not like the '==' as its redundant. So when I checked his other code, I realised that he may have done this for a reason. Executing his code in the debug mode worked fine. So I changed:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz) back to &lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz == &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;)  and lo and behold, the test started to fail.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Putting a breakpoint I can see that while on the statement:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz == &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;)&lt;/div&gt;&lt;div&gt;the debugger shows xyz is 'true' but the comparison fails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;As usual digging into the problem further, I found that in one of the constructors, xyz was not initialised and the default garbage value appeared to show it as 'true'.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So its again got me into thinking that it may be better to write &lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz == &lt;span class="Apple-style-span" &gt;true&lt;/span&gt;) instead of &lt;span class="Apple-style-span" &gt;if&lt;/span&gt;(xyz) as it may help in catching uninitialised variables. The best thing of course would be to make sure all variables in the class, whether public, protected or private are initialised.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Opinions welcome!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-4736029592081615371?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AWSRyfhaN-B26OHnzOaJT9g9RxI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AWSRyfhaN-B26OHnzOaJT9g9RxI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AWSRyfhaN-B26OHnzOaJT9g9RxI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AWSRyfhaN-B26OHnzOaJT9g9RxI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/SlhjiI9bUtI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/4736029592081615371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/06/when-true-true.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4736029592081615371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4736029592081615371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/SlhjiI9bUtI/when-true-true.html" title="When true != true" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/06/when-true-true.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEAQXo-cCp7ImA9WhZUFE8.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-1332098122235411887</id><published>2011-06-07T06:14:00.000+01:00</published><updated>2011-06-07T06:14:00.458+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-07T06:14:00.458+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Multiset" /><category scheme="http://www.blogger.com/atom/ns#" term="Multimap" /><title>Multisets and Multimaps</title><content type="html">&lt;div&gt;I was trying to understand where multisets would be used as compared to multimaps and I didnt find any straightforward answer. I found this simple explanation at &lt;a href="http://stackoverflow.com/questions/2858127/multiset-multimap-whats-the-point"&gt;StackOverflow&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;multimap&lt;/strong&gt;&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; list-style-type: disc; list-style-position: initial; list-style-image: initial; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;With ZIP code as a key, all people which have that ZIP code&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;With account ID as key, all open orders of that person/account&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;A dictionary, with per keyword various explanations&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;multiset&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;is in essence a map with a key and a integer count.&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; list-style-type: disc; list-style-position: initial; list-style-image: initial; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;The inventory of a shop, all products have their key and the amount still available is the value&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;accumulated sales data of a shop, every time a product is sold the product id get's added to the multiset thereby increasing the amount sold&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a result I created this example below. This is probably not the best of examples but I didnt want to change it. The main problem below is that multimap's are not strictly speaking required in the example below. I could have used a map. Multimap would be needed if there was no quantity_ in the class and then I can add the products one by one. I could have then used the count method to get the quantity. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;//Simple example of multiset&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;set&amp;gt;&lt;br /&gt;#include &amp;lt;map&amp;gt;&lt;br /&gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Product&lt;span class="comment"&gt; //Keeping this simple&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;Product&lt;span class="operator"&gt;(&lt;/span&gt;string name&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; code&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; price&lt;span class="operator"&gt;) :&lt;/span&gt;&lt;br /&gt;  name_&lt;span class="operator"&gt;(&lt;/span&gt;name&lt;span class="operator"&gt;),&lt;/span&gt; productCode_&lt;span class="operator"&gt;(&lt;/span&gt;code&lt;span class="operator"&gt;),&lt;/span&gt; price_&lt;span class="operator"&gt;(&lt;/span&gt;price&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    quantity_&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; //Lets fix this value for simplicity&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;    }&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;bool&lt;/span&gt; availableForSale&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;quantity_&lt;span class="operator"&gt; &amp;gt;&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    quantity_&lt;span class="operator"&gt;--;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    return&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;string name_&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; productCode_&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; price_&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; quantity_&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;Product&lt;span class="operator"&gt;();&lt;/span&gt;&lt;span class="comment"&gt; //Disabled the default constructor&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;string name&lt;span class="operator"&gt;,&lt;/span&gt; multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;&amp;amp;&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; multiset&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt; &amp;amp;&lt;/span&gt;soldItems&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt; =&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;find&lt;span class="operator"&gt;(&lt;/span&gt;name&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;it&lt;span class="operator"&gt; !=&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;())&lt;br /&gt;{&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  if&lt;/span&gt;&lt;span class="operator"&gt; ((*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;availableForSale&lt;span class="operator"&gt;())&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    soldItems&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;((*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;productCode_&lt;span class="operator"&gt;);&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;else&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "Unknown product : "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; name&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; soldItemsList&lt;span class="operator"&gt;(&lt;/span&gt;multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;&amp;amp;&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; multiset&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt; &amp;amp;&lt;/span&gt;soldItems&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt; =&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;it&lt;span class="operator"&gt; =&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; it&lt;span class="operator"&gt; !=&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;it&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; soldCount&lt;span class="operator"&gt; =&lt;/span&gt; soldItems&lt;span class="operator"&gt;.&lt;/span&gt;count&lt;span class="operator"&gt;((*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;productCode_&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Product = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; (*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;name_&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; ", Quantity Sold = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; soldCount&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt; checkSales&lt;span class="operator"&gt;(&lt;/span&gt;multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;&amp;amp;&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; multiset&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt; &amp;amp;&lt;/span&gt;soldItems&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; totalSales&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;it&lt;span class="operator"&gt; =&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; it&lt;span class="operator"&gt; !=&lt;/span&gt; inventory&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;it&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; soldCount&lt;span class="operator"&gt; =&lt;/span&gt; soldItems&lt;span class="operator"&gt;.&lt;/span&gt;count&lt;span class="operator"&gt;((*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;productCode_&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  totalSales&lt;span class="operator"&gt; +=&lt;/span&gt; soldCount&lt;span class="operator"&gt; * (*&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;second&lt;span class="operator"&gt;).&lt;/span&gt;price_&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;return&lt;/span&gt; totalSales&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;//There is no special reason to use multimap instead of a map&lt;br /&gt;//If you wanted to add same product and create quantity multimap is required&lt;br /&gt;&lt;/span&gt;  multimap&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;&lt;/span&gt; inventory&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;Product&lt;span class="operator"&gt;*&lt;/span&gt; prod1&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; new&lt;/span&gt; Product&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 2334&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;Product&lt;span class="operator"&gt;*&lt;/span&gt; prod2&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; new&lt;/span&gt; Product&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product2"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 4556&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 50&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;inventory&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;pair&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;(&lt;/span&gt;&lt;span class="string"&gt;"product1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;prod1&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;inventory&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;pair&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Product&lt;span class="operator"&gt;*&amp;gt;(&lt;/span&gt;&lt;span class="string"&gt;"product2"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;prod2&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;multiset&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; soldItems&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product2"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"apple"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;sellProduct&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"product2"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;soldItemsList&lt;span class="operator"&gt;(&lt;/span&gt;inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Total sales = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; checkSales&lt;span class="operator"&gt;(&lt;/span&gt;inventory&lt;span class="operator"&gt;,&lt;/span&gt; soldItems&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;delete&lt;/span&gt; prod1&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;delete&lt;/span&gt; prod2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output as follows:&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-SbHQGTNXnco/TeZJgj_JzwI/AAAAAAAADN8/vttv0y3nUpI/s1600/zg_multiset_2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 125px;" src="http://4.bp.blogspot.com/-SbHQGTNXnco/TeZJgj_JzwI/AAAAAAAADN8/vttv0y3nUpI/s400/zg_multiset_2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5613254809328668418" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-1332098122235411887?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XI9yTYhWrXlWSTZwaVwqGhnaoT4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XI9yTYhWrXlWSTZwaVwqGhnaoT4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XI9yTYhWrXlWSTZwaVwqGhnaoT4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XI9yTYhWrXlWSTZwaVwqGhnaoT4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/24-bGC4iv60" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/1332098122235411887/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/06/multisets-and-multimaps.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1332098122235411887?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1332098122235411887?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/24-bGC4iv60/multisets-and-multimaps.html" title="Multisets and Multimaps" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-SbHQGTNXnco/TeZJgj_JzwI/AAAAAAAADN8/vttv0y3nUpI/s72-c/zg_multiset_2.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/06/multisets-and-multimaps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UMQXw-eip7ImA9WhZVGUQ.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-2967789236810464746</id><published>2011-06-02T06:08:00.002+01:00</published><updated>2011-06-02T06:08:00.252+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-02T06:08:00.252+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Set" /><category scheme="http://www.blogger.com/atom/ns#" term="Multiset" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms" /><title>Example of Multisets</title><content type="html">&lt;div&gt;Took this one from &lt;a href="http://www.java2s.com/Code/Cpp/Set-Multiset/multisetcount.htm"&gt;Java2s&lt;/a&gt; and modified it slightly to show a bit more info.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Example as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;//Simple example of multiset&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;set&amp;gt;&lt;br /&gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt; a&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt; ] = {&lt;/span&gt;&lt;span class="int"&gt; 7&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 22&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 9&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 18&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 30&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 100&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 22&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 85&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 13&lt;/span&gt;&lt;span class="operator"&gt; };&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt; aSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; std&lt;span class="operator"&gt;::&lt;/span&gt;multiset&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; std&lt;span class="operator"&gt;::&lt;/span&gt;less&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt; &amp;gt; &amp;gt;&lt;/span&gt; intMultiset&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;,&lt;/span&gt; a&lt;span class="operator"&gt; +&lt;/span&gt; aSize&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "Printing out all the values in the multiset : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; multiset&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; for&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt; it&lt;span class="operator"&gt; =&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; it&lt;span class="operator"&gt; !=&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;it&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "  "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; std&lt;span class="operator"&gt;::&lt;/span&gt;ostream_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt; &amp;gt;&lt;/span&gt; output&lt;span class="operator"&gt;(&lt;/span&gt; cout&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt; );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "There are currently "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;count&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt; )&lt;br /&gt;      &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " values of 15 in the multiset\n\n"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt; );&lt;/span&gt;&lt;br /&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt; );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "After two inserts, there are currently "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;count&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt; )&lt;br /&gt;      &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " values of 15 in the multiset\n\n"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "Printing out all the values in the multiset : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; for&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt; it&lt;span class="operator"&gt; =&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; it&lt;span class="operator"&gt; !=&lt;/span&gt; intMultiset&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;it&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "  "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output as follows:&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-p4f8ZJTMo7g/TeYPzcYq7nI/AAAAAAAADN0/Sd9yVAsDFUA/s1600/zg_multiset_1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 100px;" src="http://4.bp.blogspot.com/-p4f8ZJTMo7g/TeYPzcYq7nI/AAAAAAAADN0/Sd9yVAsDFUA/s400/zg_multiset_1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5613191362031316594" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-2967789236810464746?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ItWJBi5rWJbCJp_saXapp_fVcxg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ItWJBi5rWJbCJp_saXapp_fVcxg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ItWJBi5rWJbCJp_saXapp_fVcxg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ItWJBi5rWJbCJp_saXapp_fVcxg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/wl64ep2Un4U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/2967789236810464746/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/06/example-of-multisets.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2967789236810464746?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2967789236810464746?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/wl64ep2Un4U/example-of-multisets.html" title="Example of Multisets" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-p4f8ZJTMo7g/TeYPzcYq7nI/AAAAAAAADN0/Sd9yVAsDFUA/s72-c/zg_multiset_1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/06/example-of-multisets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEECQXg-eSp7ImA9WhZVE00.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-1500652747903663654</id><published>2011-05-25T06:51:00.003+01:00</published><updated>2011-05-25T06:51:00.651+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-25T06:51:00.651+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C++0x" /><category scheme="http://www.blogger.com/atom/ns#" term="Register Variables" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><category scheme="http://www.blogger.com/atom/ns#" term="Auto Variables" /><title>'auto' and 'register'  variables</title><content type="html">&lt;div&gt;One of the questions that is still being asked in the interviews is about 'auto variables' and 'register variables'. I have never come across any practical code that uses them and dont even see any need for them being used but as I say, Interview questions dont reflect how good a coder would be and even if a person answers all questions correctly, how can we judge someone's debugging skills.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, 'auto' variables are the default local variables. When you define a local variable, it is by default 'auto'. There is no need to use it as its implicit. In the new C++ standard, &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B0x"&gt;C++0x&lt;/a&gt;, 'auto' serves &lt;a href="http://stackoverflow.com/questions/2847410/goal-of-cs-auto-keyword"&gt;another purpose&lt;/a&gt; and may break any C++ code using auto when compiled using C++0x.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The 'register' keyword was initially used to help the compiler optimise the performance for the variables that were read/written very often. Since the compilers have evolved, nowadays they choose to &lt;a href="http://stackoverflow.com/questions/709114/register-variables"&gt;ignore the requests&lt;/a&gt; as they can optimize the performance better than us humans. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The following is from &lt;a href="http://stackoverflow.com/questions/1256246/address-of-register-variable"&gt;StackOverflow&lt;/a&gt; discussion:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; font-size: 14px; line-height: 18px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;Here's an excerpt from Section 6.7.1 (footnote 101) of the &lt;a href="http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf" rel="nofollow" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 119, 204); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;C99 standard (pdf)&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 1px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); quotes: none; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;The implementation may treat any &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt; declaration simply as an &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;auto&lt;/code&gt; declaration. However,&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;whether or not addressable storage is actually used, the address of any part of an object declared with storage-class specifier register cannot be computed&lt;/strong&gt;, either explicitly (by use of the unary &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;&amp;amp;&lt;/code&gt; operator as discussed in 6.5.3.2) or implicitly (by converting an array name to a pointer as discussed in 6.3.2.1). Thus, the only operator that can be applied to an array declared with storage-class specifier &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt; is &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;sizeof&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;And from Section 7.1.1, Paragraph 3 of the &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf" rel="nofollow" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 119, 204); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;C++ standard (pdf)&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 1px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); quotes: none; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;A &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt; specifier has the same semantics as an &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;auto&lt;/code&gt; specifier together with a hint to the implementation that the object so declared will be heavily used. &lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;[Note: the hint can be ignored and in most implementations it will be ignored if the address of the object is taken. —end note]&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;So, this seems like another case of C and C++ having "identical" features that behave the way you'd expect them most of the time, but diverge and cause confusion other times. In this situation, I think the way C does it makes sense since it&lt;/p&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 30px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; list-style-type: disc; list-style-position: initial; list-style-image: initial; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;is semantically closest to being correct and;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; background-position: initial initial; background-repeat: initial initial; "&gt;doesn't do things behind your back.&lt;/li&gt;&lt;/ul&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 19px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-family: 'Trebuchet MS', 'Liberation Sans', 'DejaVu Sans', sans-serif; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;Fun tidbits about &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 19px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt;&lt;/h2&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;The C++ group (WG21) &lt;a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#809" rel="nofollow" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 119, 204); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;wants to deprecate &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt;&lt;/a&gt;:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 1px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); quotes: none; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;The &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt; keyword serves very little function, offering no more than a hint that a note says is typically ignored. It should be deprecated in this version of the standard, freeing the reserved name up for use in a future standard, much like &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;auto&lt;/code&gt; has been re-used this time around for being similarly useless.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; font-weight: bold; background-position: initial initial; background-repeat: initial initial; "&gt;Notes from the March, 2009 meeting:&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;The consensus of the CWG was in favor of deprecating &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;Look what the C99 group (WG14) &lt;a href="http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1300.pdf" rel="nofollow" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: rgb(0, 119, 204); text-decoration: none; cursor: pointer; background-position: initial initial; background-repeat: initial initial; "&gt;said about &lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt; (pdf)&lt;/a&gt; at a meeting:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 1px; padding-left: 10px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); quotes: none; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; clear: both; word-wrap: break-word; background-position: initial initial; background-repeat: initial initial; "&gt;General agreement to deprecate the “&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;auto&lt;/code&gt;” keyword. Should we ask WG21 to go back to the previous use of “&lt;code style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 1px; padding-right: 5px; padding-bottom: 1px; padding-left: 5px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; vertical-align: baseline; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(238, 238, 238); font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; background-position: initial initial; background-repeat: initial initial; "&gt;register&lt;/code&gt;” (no address)? No, this will not fly with WG21.&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sample program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;&lt;br /&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 123&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt; auto&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; j&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 456&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt; register&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; k&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 789&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Address of i = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; &amp;amp;&lt;/span&gt;i&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", Value = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Address of j = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; &amp;amp;&lt;/span&gt;j&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", Value = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; j&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Address of k = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; &amp;amp;&lt;/span&gt;k&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", Value = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; k&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output as follows:&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-8Lf2dCW2mdE/TduN0QmcEuI/AAAAAAAADNY/d2fucTY40aw/s1600/zg_auto_and_register.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 145px;" src="http://3.bp.blogspot.com/-8Lf2dCW2mdE/TduN0QmcEuI/AAAAAAAADNY/d2fucTY40aw/s400/zg_auto_and_register.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5610233689768989410" /&gt;&lt;/a&gt;Note that the address of i, j and k are very close implying that the compiler chose to ignore the 'register' keyword.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-1500652747903663654?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rh801J4RI5E9oRNQWCS18Q1alew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rh801J4RI5E9oRNQWCS18Q1alew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rh801J4RI5E9oRNQWCS18Q1alew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rh801J4RI5E9oRNQWCS18Q1alew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/qZfl5dl-PXI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/1500652747903663654/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/05/auto-and-register-variables.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1500652747903663654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1500652747903663654?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/qZfl5dl-PXI/auto-and-register-variables.html" title="'auto' and 'register'  variables" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-8Lf2dCW2mdE/TduN0QmcEuI/AAAAAAAADNY/d2fucTY40aw/s72-c/zg_auto_and_register.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/05/auto-and-register-variables.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YAQX85cSp7ImA9WhZWEEQ.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-7309092798526229414</id><published>2011-05-11T06:19:00.000+01:00</published><updated>2011-05-11T06:19:00.129+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-11T06:19:00.129+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms sort" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms min" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms copy" /><category scheme="http://www.blogger.com/atom/ns#" term="Set" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms set_intersection" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms set_union" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms" /><title>Example of set_union and set_intersection</title><content type="html">&lt;div&gt;Program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;set&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; setOne&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="int"&gt;5&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 20&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 25&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; setTwo&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="int"&gt;50&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 40&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 30&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 20&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 10&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 11&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 21&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 31&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 41&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 51&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;  int&lt;/span&gt; setOneSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;setOne&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; setTwoSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;setTwo&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Its necessary to sort if not already sorted&lt;br /&gt;&lt;/span&gt;  sort&lt;span class="operator"&gt;(&lt;/span&gt;setTwo&lt;span class="operator"&gt;,&lt;/span&gt; setTwo&lt;span class="operator"&gt; +&lt;/span&gt; setTwoSize&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; unionSetVector&lt;span class="operator"&gt;(&lt;/span&gt;setOneSize&lt;span class="operator"&gt; +&lt;/span&gt; setTwoSize&lt;span class="operator"&gt;);&lt;/span&gt; &lt;br /&gt;  set_union&lt;span class="operator"&gt;(&lt;/span&gt;setOne&lt;span class="operator"&gt;,&lt;/span&gt; setOne&lt;span class="operator"&gt; +&lt;/span&gt; setOneSize&lt;span class="operator"&gt;,&lt;/span&gt; setTwo&lt;span class="operator"&gt;,&lt;/span&gt; setTwo&lt;span class="operator"&gt; +&lt;/span&gt; setTwoSize&lt;span class="operator"&gt;,&lt;/span&gt; unionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n1. unionSetVector : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  copy&lt;span class="operator"&gt;(&lt;/span&gt;unionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; unionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; ostream_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;(&lt;/span&gt;cout&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; intersectionSetVector&lt;span class="operator"&gt;(&lt;/span&gt;min&lt;span class="operator"&gt;(&lt;/span&gt;setOneSize&lt;span class="operator"&gt;,&lt;/span&gt; setTwoSize&lt;span class="operator"&gt;));&lt;/span&gt; &lt;br /&gt;  set_intersection&lt;span class="operator"&gt;(&lt;/span&gt;setOne&lt;span class="operator"&gt;,&lt;/span&gt; setOne&lt;span class="operator"&gt; +&lt;/span&gt; setOneSize&lt;span class="operator"&gt;,&lt;/span&gt; setTwo&lt;span class="operator"&gt;,&lt;/span&gt; setTwo&lt;span class="operator"&gt; +&lt;/span&gt; setTwoSize&lt;span class="operator"&gt;,&lt;/span&gt; intersectionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n1. intersectionSetVector : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  copy&lt;span class="operator"&gt;(&lt;/span&gt;intersectionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; intersectionSetVector&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; ostream_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;(&lt;/span&gt;cout&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-iiyf_Wxrwkw/TcfcKnyDCSI/AAAAAAAADJA/YIpd3MwiYTo/s1600/zg_set_2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 122px;" src="http://3.bp.blogspot.com/-iiyf_Wxrwkw/TcfcKnyDCSI/AAAAAAAADJA/YIpd3MwiYTo/s400/zg_set_2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5604690336321571106" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-7309092798526229414?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8I87f_yeONK4Vv_AYpnq6GOTrwg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8I87f_yeONK4Vv_AYpnq6GOTrwg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8I87f_yeONK4Vv_AYpnq6GOTrwg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8I87f_yeONK4Vv_AYpnq6GOTrwg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/KHTxRm81WVE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/7309092798526229414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/05/example-of-setunion-and-setintersection.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7309092798526229414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7309092798526229414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/KHTxRm81WVE/example-of-setunion-and-setintersection.html" title="Example of set_union and set_intersection" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-iiyf_Wxrwkw/TcfcKnyDCSI/AAAAAAAADJA/YIpd3MwiYTo/s72-c/zg_set_2.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/05/example-of-setunion-and-setintersection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMCQn4zfip7ImA9WhZXGUk.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-3552811120795928904</id><published>2011-05-03T06:14:00.000+01:00</published><updated>2011-05-09T13:17:43.086+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T13:17:43.086+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms equal_range" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms upper_bound" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms lower_bound" /><category scheme="http://www.blogger.com/atom/ns#" term="Set" /><title>Example of 'Set' and operations</title><content type="html">&lt;div&gt;Example of Set and operations as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;set&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; someInts&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="int"&gt;3&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 6&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 9&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 12&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 18&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; someIntsSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someInts&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  set&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; someSet&lt;span class="operator"&gt; (&lt;/span&gt;someInts&lt;span class="operator"&gt;,&lt;/span&gt; someInts&lt;span class="operator"&gt; +&lt;/span&gt; someIntsSize&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n1. someSet : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  copy&lt;span class="operator"&gt;(&lt;/span&gt;someSet&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; ostream_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;(&lt;/span&gt;cout&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Insert some more elements&lt;br /&gt;&lt;/span&gt;  someSet&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;0&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  someSet&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  someSet&lt;span class="operator"&gt;.&lt;/span&gt;insert&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;20&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n2. someSet : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  copy&lt;span class="operator"&gt;(&lt;/span&gt;someSet&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; ostream_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;(&lt;/span&gt;cout&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Upper Bound means the next greater number &lt;br /&gt;&lt;/span&gt;  set&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;upper_bound&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;5&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nupper_bound(5) = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  it&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;upper_bound&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nupper_bound(10) = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Lower bound means either equal or greater number&lt;br /&gt;&lt;/span&gt;  it&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;lower_bound&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;5&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nlower_bound(5) = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  it&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;lower_bound&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nlower_bound(10) = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;it&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Equal Range returns a pair&lt;br /&gt;&lt;/span&gt;  pair&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;set&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator&lt;span class="operator"&gt;,&lt;/span&gt;set&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; retIt&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  retIt&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;equal_range&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;5&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nequal_range(5) - lower bound = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;retIt&lt;span class="operator"&gt;.&lt;/span&gt;first&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; &lt;br /&gt;    " upper bound = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;retIt&lt;span class="operator"&gt;.&lt;/span&gt;second&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  retIt&lt;span class="operator"&gt; =&lt;/span&gt; someSet&lt;span class="operator"&gt;.&lt;/span&gt;equal_range&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nequal_range(10) - lower bound = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;retIt&lt;span class="operator"&gt;.&lt;/span&gt;first&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; &lt;br /&gt;    " upper bound = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt; *&lt;/span&gt;retIt&lt;span class="operator"&gt;.&lt;/span&gt;second&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-z-J_WF4qatI/TbaZDi0-rvI/AAAAAAAADIM/x7L9J-nRNeM/s1600/zg_set_1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://1.bp.blogspot.com/-z-J_WF4qatI/TbaZDi0-rvI/AAAAAAAADIM/x7L9J-nRNeM/s400/zg_set_1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5599831472849465074" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-3552811120795928904?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zmDngg36d_gZLLOyRYQKIj3YIdg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zmDngg36d_gZLLOyRYQKIj3YIdg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zmDngg36d_gZLLOyRYQKIj3YIdg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zmDngg36d_gZLLOyRYQKIj3YIdg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/uAwF8_TgGv0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/3552811120795928904/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/05/example-of-set-and-operations.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3552811120795928904?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3552811120795928904?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/uAwF8_TgGv0/example-of-set-and-operations.html" title="Example of 'Set' and operations" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-z-J_WF4qatI/TbaZDi0-rvI/AAAAAAAADIM/x7L9J-nRNeM/s72-c/zg_set_1.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/05/example-of-set-and-operations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQMQX09cSp7ImA9WhZQGEU.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-7706384407609195680</id><published>2011-04-27T06:33:00.002+01:00</published><updated>2011-04-27T06:33:00.369+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T06:33:00.369+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Copy" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms" /><title>Example of Algorithm Copy</title><content type="html">&lt;div&gt;Sometimes its useful to know the 'copy' method in algorithm class. The following is an example:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt; &lt;br /&gt;//OutputIterator copy ( InputIterator first, InputIterator last, OutputIterator result );&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; someInts&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 20&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 20&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 40&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 50&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; someMoreInts&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="int"&gt;100&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 200&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 300&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 400&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 500&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 600&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 700&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; someVector&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator someIterator&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Get the total size of all elements&lt;br /&gt;&lt;/span&gt;&lt;span class="type"&gt;  int&lt;/span&gt; totalSize&lt;span class="operator"&gt; = (&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someInts&lt;span class="operator"&gt;) +&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someMoreInts&lt;span class="operator"&gt;)) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Resize someVector to right size&lt;br /&gt;&lt;/span&gt;  someVector&lt;span class="operator"&gt;.&lt;/span&gt;resize&lt;span class="operator"&gt;(&lt;/span&gt;someVector&lt;span class="operator"&gt;.&lt;/span&gt;size&lt;span class="operator"&gt;() +&lt;/span&gt; totalSize&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Get the number of elements of someInts&lt;br /&gt;&lt;/span&gt;&lt;span class="type"&gt;  int&lt;/span&gt; tempSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someInts&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;iterator finalElementIt&lt;span class="operator"&gt; =&lt;/span&gt; copy&lt;span class="operator"&gt;(&lt;/span&gt;someInts&lt;span class="operator"&gt;,&lt;/span&gt; someInts&lt;span class="operator"&gt; +&lt;/span&gt; tempSize&lt;span class="operator"&gt;,&lt;/span&gt; someVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n1. someVector contains :"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someIterator&lt;span class="operator"&gt; =&lt;/span&gt; someVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; someIterator&lt;span class="operator"&gt; !=&lt;/span&gt; someVector&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;someIterator&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"  "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;*&lt;/span&gt;someIterator&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //Get size of someMoreInts&lt;br /&gt;&lt;/span&gt;  tempSize&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someMoreInts&lt;span class="operator"&gt;) /&lt;/span&gt;&lt;span class="keyword"&gt; sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  copy&lt;span class="operator"&gt;(&lt;/span&gt;someMoreInts&lt;span class="operator"&gt;,&lt;/span&gt; someMoreInts&lt;span class="operator"&gt; +&lt;/span&gt; tempSize&lt;span class="operator"&gt;,&lt;/span&gt; finalElementIt&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n2. someVector contains :"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;someIterator&lt;span class="operator"&gt; =&lt;/span&gt; someVector&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; someIterator&lt;span class="operator"&gt; !=&lt;/span&gt; someVector&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;someIterator&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"  "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;*&lt;/span&gt;someIterator&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/-gieVWbjxH14/TbaKk0mE_nI/AAAAAAAADIE/lHKpygyht6I/s1600/zg_algorithm_copy.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 98px;" src="http://4.bp.blogspot.com/-gieVWbjxH14/TbaKk0mE_nI/AAAAAAAADIE/lHKpygyht6I/s400/zg_algorithm_copy.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5599815551880068722" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-7706384407609195680?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Q2PPPCQnGYFf8VWnsbuzYNDVyqo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q2PPPCQnGYFf8VWnsbuzYNDVyqo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Q2PPPCQnGYFf8VWnsbuzYNDVyqo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Q2PPPCQnGYFf8VWnsbuzYNDVyqo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/I7gw2OI0xtE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/7706384407609195680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/04/example-of-algorithm-copy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7706384407609195680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7706384407609195680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/I7gw2OI0xtE/example-of-algorithm-copy.html" title="Example of Algorithm Copy" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-gieVWbjxH14/TbaKk0mE_nI/AAAAAAAADIE/lHKpygyht6I/s72-c/zg_algorithm_copy.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/04/example-of-algorithm-copy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUEQX08eyp7ImA9WhZQEko.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-3454719491704392254</id><published>2011-04-20T06:10:00.004+01:00</published><updated>2011-04-20T06:10:00.373+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-20T06:10:00.373+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Challenging Problems" /><category scheme="http://www.blogger.com/atom/ns#" term="Reverse Engineering" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><category scheme="http://www.blogger.com/atom/ns#" term="References" /><title>An Challenging Interview question with a difference</title><content type="html">&lt;div&gt;The following program is provided:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;//This class can be designed as you wish&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt; SR&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;SR&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; i&lt;span class="operator"&gt;) {}&lt;br /&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; sum&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;for&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="int"&gt; 100&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt;++)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  SR ii&lt;span class="operator"&gt;(&lt;/span&gt;i&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;i&lt;span class="operator"&gt;--)&lt;/span&gt;&lt;br /&gt;    sum&lt;span class="operator"&gt; +=&lt;/span&gt; i&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Expected value of sum = 161700"&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Returned value of sum = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; sum&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As already mentioned above, the expected output of 161700 is provided. The class 'SR' could be written as one wishes. How to do write the class 'SR' to get the desired output?&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;Give it a try before looking at the solution.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;.&lt;/div&gt;&lt;div&gt;The modified program with the correct 'SR' class as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;//This class can be designed as you wish&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt; SR&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt; SR&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; i&lt;span class="operator"&gt;):&lt;/span&gt;ref&lt;span class="operator"&gt;(&lt;/span&gt;i&lt;span class="operator"&gt;)&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   var&lt;span class="operator"&gt; =&lt;/span&gt; i&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;br /&gt; ~&lt;/span&gt;SR&lt;span class="operator"&gt;()&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   ref&lt;span class="operator"&gt; =&lt;/span&gt; var&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt; var&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt;ref&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; int&lt;/span&gt; sum&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; for&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="int"&gt; 100&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt;++)&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   SR ii&lt;span class="operator"&gt;(&lt;/span&gt;i&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   while&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;i&lt;span class="operator"&gt;--)&lt;/span&gt;&lt;br /&gt;     sum&lt;span class="operator"&gt; +=&lt;/span&gt; i&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Expected value of sum = 161700"&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Returned value of sum = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; sum&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Source: Modified from &lt;a href="http://stackoverflow.com/questions/2428404/tricky-interview-question-for-c"&gt;here&lt;/a&gt;. Another similar question is available here.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-3454719491704392254?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zwmXcvJf2eYrzI9wNO70fHDkkMM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zwmXcvJf2eYrzI9wNO70fHDkkMM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zwmXcvJf2eYrzI9wNO70fHDkkMM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zwmXcvJf2eYrzI9wNO70fHDkkMM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/Bmd0HAqRVMs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/3454719491704392254/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/04/challenging-interview-question-with.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3454719491704392254?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3454719491704392254?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/Bmd0HAqRVMs/challenging-interview-question-with.html" title="An Challenging Interview question with a difference" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/04/challenging-interview-question-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIMQXs4fip7ImA9WhZRFUU.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-4129774647020405914</id><published>2011-04-12T06:53:00.003+01:00</published><updated>2011-04-12T06:53:00.536+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-12T06:53:00.536+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="String Stream" /><category scheme="http://www.blogger.com/atom/ns#" term="String" /><title>isNumeric()</title><content type="html">&lt;div&gt;For some reason many C++ programmers believe there is an isNumeric() function available as part of the language. In fact I was searching for the header file to include to get a piece of code to work. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Its not difficult to create a function that will be able to check if the string is numeric or not. Here is the code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;sstream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;bool&lt;/span&gt; isNumeric1&lt;span class="operator"&gt;(&lt;/span&gt;string stringToCheck&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  bool&lt;/span&gt; numeric&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;stringToCheck&lt;span class="operator"&gt;.&lt;/span&gt;find_first_not_of&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"0123456789."&lt;/span&gt;&lt;span class="operator"&gt;) ==&lt;/span&gt; string&lt;span class="operator"&gt;::&lt;/span&gt;npos&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;    numeric&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt; numeric&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;bool&lt;/span&gt; isNumeric2&lt;span class="operator"&gt;(&lt;/span&gt;string stringToCheck&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  bool&lt;/span&gt; numeric&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  unsigned&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;numeric&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt; stringToCheck&lt;span class="operator"&gt;.&lt;/span&gt;length&lt;span class="operator"&gt;())&lt;br /&gt;  {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    switch&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;stringToCheck&lt;span class="operator"&gt;[&lt;/span&gt;i&lt;span class="operator"&gt;])&lt;br /&gt;    {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '0'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '1'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '2'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '3'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '4'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '5'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; &lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '6'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '7'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '8'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '9'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt; case&lt;/span&gt;&lt;span class="char"&gt; '.'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;      //do nothing&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    default&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;      numeric&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;    }&lt;/span&gt;&lt;br /&gt;    i&lt;span class="operator"&gt;++;&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt; numeric&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;bool&lt;/span&gt; isNumeric3&lt;span class="operator"&gt;(&lt;/span&gt;string stringToCheck&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  stringstream streamVal&lt;span class="operator"&gt;(&lt;/span&gt;stringToCheck&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  double&lt;/span&gt; tempVal&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  streamVal&lt;span class="operator"&gt; &amp;gt;&amp;gt;&lt;/span&gt; tempVal&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; //If numeric then everything transferred to tempVal&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;streamVal&lt;span class="operator"&gt;.&lt;/span&gt;get&lt;span class="operator"&gt;() !=&lt;/span&gt; EOF&lt;span class="operator"&gt;)&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    return&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  else&lt;br /&gt;    return&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  string str1&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"123"&lt;/span&gt;&lt;span class="operator"&gt;),&lt;/span&gt; str2&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"134.567"&lt;/span&gt;&lt;span class="operator"&gt;),&lt;/span&gt; str3&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"12AB"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "Approach 1"&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str1&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric1&lt;span class="operator"&gt;(&lt;/span&gt;str1&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str2&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric1&lt;span class="operator"&gt;(&lt;/span&gt;str2&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str3&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric1&lt;span class="operator"&gt;(&lt;/span&gt;str3&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nApproach 2"&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str1&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric2&lt;span class="operator"&gt;(&lt;/span&gt;str1&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str2&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric2&lt;span class="operator"&gt;(&lt;/span&gt;str2&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str3&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric2&lt;span class="operator"&gt;(&lt;/span&gt;str3&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; "\nApproach 3"&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str1&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric3&lt;span class="operator"&gt;(&lt;/span&gt;str1&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str2&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric3&lt;span class="operator"&gt;(&lt;/span&gt;str2&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; str3&lt;span class="operator"&gt; &amp;lt;&amp;lt; (&lt;/span&gt;isNumeric3&lt;span class="operator"&gt;(&lt;/span&gt;str3&lt;span class="operator"&gt;) ?&lt;/span&gt;&lt;span class="string"&gt; " is Numeric"&lt;/span&gt;&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="string"&gt; " is Not Numeric"&lt;/span&gt;&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output is as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-fW4RPCGSbZs/TZ3syTi5dFI/AAAAAAAADHU/ROs4-bCskEk/s1600/zg_is_numeric.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 252px;" src="http://2.bp.blogspot.com/-fW4RPCGSbZs/TZ3syTi5dFI/AAAAAAAADHU/ROs4-bCskEk/s400/zg_is_numeric.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5592886661248283730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;There are few problems in the program above:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. It does not cater for negative numbers&lt;/div&gt;&lt;div&gt;2. It will return wrong result when you have incorrect string like 12.34.56.78&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have intentionally left it as an exercise.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Other approaches are possible as well. Why not try and think of an approach yourself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-4129774647020405914?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vgIm5RTqV6kJF913HZZKJ2koyJo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vgIm5RTqV6kJF913HZZKJ2koyJo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vgIm5RTqV6kJF913HZZKJ2koyJo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vgIm5RTqV6kJF913HZZKJ2koyJo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/9i93JgpxFrk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/4129774647020405914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/04/isnumeric.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4129774647020405914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4129774647020405914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/9i93JgpxFrk/isnumeric.html" title="isNumeric()" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-fW4RPCGSbZs/TZ3syTi5dFI/AAAAAAAADHU/ROs4-bCskEk/s72-c/zg_is_numeric.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/04/isnumeric.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GQX85cSp7ImA9WhZSGUU.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-7236294313578447556</id><published>2011-04-05T06:37:00.000+01:00</published><updated>2011-04-05T06:37:00.129+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-05T06:37:00.129+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Find" /><category scheme="http://www.blogger.com/atom/ns#" term="String" /><title>string::find_next()</title><content type="html">&lt;div&gt;I met this new starter who has come from Java background. He was upset because he couldn't find string::find_next() as C++ function. He said Java is much more flexible this way. In reality, its not that bad if you look at the definition of find carefully. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;size_t find ( const string&amp;amp; str, size_t pos = 0 ) const;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;size_t find ( const char* s, size_t pos, size_t n ) const;&lt;/div&gt;&lt;div&gt;size_t find ( const char* s, size_t pos = 0 ) const;&lt;/div&gt;&lt;div&gt;size_t find ( char c, size_t pos = 0 ) const;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first one works as find_next as I show in the example below:&lt;/div&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  string someString&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"Tom is not in. Infact Tom is not going to be in Tomorrow or day after Tomorrow"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  string findTheString&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"Tom"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;  unsigned&lt;/span&gt; position&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  position&lt;span class="operator"&gt; =&lt;/span&gt; someString&lt;span class="operator"&gt;.&lt;/span&gt;find&lt;span class="operator"&gt;(&lt;/span&gt;findTheString&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"First position of "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; findTheString&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " is "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; position&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; &lt;br /&gt;  //We want to find all the next positions which is after position + findTheString.length()&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;position&lt;span class="operator"&gt; !=&lt;/span&gt; string&lt;span class="operator"&gt;::&lt;/span&gt;npos&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    position&lt;span class="operator"&gt; =&lt;/span&gt; someString&lt;span class="operator"&gt;.&lt;/span&gt;find&lt;span class="operator"&gt;(&lt;/span&gt;findTheString&lt;span class="operator"&gt;, (&lt;/span&gt;position&lt;span class="operator"&gt; +&lt;/span&gt; findTheString&lt;span class="operator"&gt;.&lt;/span&gt;length&lt;span class="operator"&gt;()));&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Next position of "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; findTheString&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " is "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; position&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-cd17ZWymRpI/TZmbJc0kK-I/AAAAAAAADG8/_qnqqcFh2AA/s1600/zg_string_find_next.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 148px;" src="http://1.bp.blogspot.com/-cd17ZWymRpI/TZmbJc0kK-I/AAAAAAAADG8/_qnqqcFh2AA/s400/zg_string_find_next.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5591670999014976482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Exercise for new programmers:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;The last two Tom's are part of 'Tomorrow', how can you make sure they are not printed&lt;/li&gt;&lt;li&gt;The last Tom which is 4294... is equal to -1 or string::npos. How can you stop that being printed without making another check for string::npos&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Please dont post answers as they should be trivial exercise and you should be able to figure out without much problems.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-7236294313578447556?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LLeQLz1tF2JP1c9JtIPPmWNchpk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LLeQLz1tF2JP1c9JtIPPmWNchpk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LLeQLz1tF2JP1c9JtIPPmWNchpk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LLeQLz1tF2JP1c9JtIPPmWNchpk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/EJVeIwaUHC8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/7236294313578447556/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/04/stringfindnext.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7236294313578447556?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7236294313578447556?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/EJVeIwaUHC8/stringfindnext.html" title="string::find_next()" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-cd17ZWymRpI/TZmbJc0kK-I/AAAAAAAADG8/_qnqqcFh2AA/s72-c/zg_string_find_next.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/04/stringfindnext.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQCRHo7cCp7ImA9WhZSFE0.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-8820182015897358468</id><published>2011-03-29T06:23:00.000+01:00</published><updated>2011-03-29T15:02:45.408+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-29T15:02:45.408+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Directory Operations" /><category scheme="http://www.blogger.com/atom/ns#" term="Command-line arguments" /><category scheme="http://www.blogger.com/atom/ns#" term="File Operations" /><title>Reading file names from directory</title><content type="html">&lt;div&gt;The other day I had to read all the file names from a directory and I found it really difficult to write a simple program to do that. While searching I ended up at &lt;a href="http://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt; and the following example is taken from &lt;a href="http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that the 'dirent.h' is not available as standard windows file and the best option is to download it from &lt;a href="http://users.cs.fiu.edu/~weiss/cop4338/dirent.h"&gt;here&lt;/a&gt; and add it in your include directory of the project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;#pragma warning( disable : 4996 )&lt;br /&gt;#include "dirent.h"&lt;br /&gt;#pragma warning( default : 4996 )&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; argc&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; char&lt;/span&gt;&lt;span class="operator"&gt; *&lt;/span&gt;argv&lt;span class="operator"&gt;[])&lt;br /&gt;{&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;argc&lt;span class="operator"&gt; !=&lt;/span&gt;&lt;span class="int"&gt; 2&lt;/span&gt;&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Usage: "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;argv&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt;0&lt;/span&gt;&lt;span class="operator"&gt;]&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;" &amp;lt;Directory name&amp;gt;"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="operator"&gt; -&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;DIR&lt;span class="operator"&gt; *&lt;/span&gt;dir&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;dir&lt;span class="operator"&gt; =&lt;/span&gt; opendir&lt;span class="operator"&gt; (&lt;/span&gt;argv&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;]);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;if&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;dir&lt;span class="operator"&gt; !=&lt;/span&gt; NULL&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Directory Listing for "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;argv&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;]&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;" : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;  struct&lt;/span&gt; dirent&lt;span class="operator"&gt; *&lt;/span&gt;ent&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt; ((&lt;/span&gt;ent&lt;span class="operator"&gt; =&lt;/span&gt; readdir&lt;span class="operator"&gt; (&lt;/span&gt;dir&lt;span class="operator"&gt;)) !=&lt;/span&gt; NULL&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;ent&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;d_name&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;  }&lt;br /&gt;}&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;else&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Invalid Directory name"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="operator"&gt; -&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;Note that in this program we put Command-line arguments argc and argv. What this means is that the final .exe is run using command prompt and the first parameter will be exe file name and the second parameter will be the directory path or you can add the directory path in Debugging-&amp;gt;Command arguments of the properties &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may also encounter the following warning&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;to get rid of it, I have used the #Pragma &lt;a href="http://advancedcppwithexamples.blogspot.com/2009/08/suppress-compiler-warning-using-pragma.html"&gt;supressor&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may also get the following error:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;error C2664: 'FindFirstFileW' : cannot convert parameter 1 from 'char *' to 'LPCWSTR'&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;to get rid of it, go to properties-&amp;gt;general-&amp;gt;Character set - default is 'Use Unicode Charachter set', change it to 'Use Multi-Byte Character Set' &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-WCt3YXEkCMU/TYzByR0FDYI/AAAAAAAADF8/oIAVRbGigzg/s1600/zg_filesread_directory.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 157px;" src="http://1.bp.blogspot.com/-WCt3YXEkCMU/TYzByR0FDYI/AAAAAAAADF8/oIAVRbGigzg/s400/zg_filesread_directory.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5588054307179400578" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-8820182015897358468?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9dgWHku9V3haI1Nw7cGQDV_5Jv0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9dgWHku9V3haI1Nw7cGQDV_5Jv0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9dgWHku9V3haI1Nw7cGQDV_5Jv0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9dgWHku9V3haI1Nw7cGQDV_5Jv0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/9FtklOV621s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/8820182015897358468/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/03/reading-file-names-from-directory.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/8820182015897358468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/8820182015897358468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/9FtklOV621s/reading-file-names-from-directory.html" title="Reading file names from directory" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-WCt3YXEkCMU/TYzByR0FDYI/AAAAAAAADF8/oIAVRbGigzg/s72-c/zg_filesread_directory.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/03/reading-file-names-from-directory.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGQX4-fSp7ImA9WhZTF0o.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-5018848032730537253</id><published>2011-03-22T06:57:00.002Z</published><updated>2011-03-22T06:57:00.055Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-22T06:57:00.055Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Vector" /><category scheme="http://www.blogger.com/atom/ns#" term="File Operations" /><title>Reading Files into Vector</title><content type="html">&lt;div&gt;Thought of this while trying to create a parser. The intention is to read a complete text file into a vector and then use this vector for other operations. This program shows how to read from a text file into vectors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The input file is as follows:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;Line num 1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;Another line&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;Line number 3&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;4th Line!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:'courier new';"&gt;**%** Last line **%**&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;fstream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;std&lt;span class="operator"&gt;::&lt;/span&gt;string&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; lines&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; lines&lt;span class="operator"&gt;.&lt;/span&gt;reserve&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;5000&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="comment"&gt; //Assuming that the file to read can have max 5K lines&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; string fileName&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"test.txt"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; ifstream file&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; file&lt;span class="operator"&gt;.&lt;/span&gt;open&lt;span class="operator"&gt;(&lt;/span&gt;fileName&lt;span class="operator"&gt;.&lt;/span&gt;c_str&lt;span class="operator"&gt;());&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; if&lt;/span&gt;&lt;span class="operator"&gt;(!&lt;/span&gt;file&lt;span class="operator"&gt;.&lt;/span&gt;is_open&lt;span class="operator"&gt;())&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   cerr&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Error opening file : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;fileName&lt;span class="operator"&gt;.&lt;/span&gt;c_str&lt;span class="operator"&gt;()&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   return&lt;/span&gt;&lt;span class="operator"&gt; -&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt; //Read the lines and store it in the vector&lt;br /&gt;&lt;/span&gt;  string line&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;getline&lt;span class="operator"&gt;(&lt;/span&gt;file&lt;span class="operator"&gt;,&lt;/span&gt;line&lt;span class="operator"&gt;))&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   lines&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;line&lt;span class="operator"&gt;);&lt;br /&gt; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; file&lt;span class="operator"&gt;.&lt;/span&gt;close&lt;span class="operator"&gt;();&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt; //Dump all the lines in output&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;  for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;unsigned int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt; lines&lt;span class="operator"&gt;.&lt;/span&gt;size&lt;span class="operator"&gt;();&lt;/span&gt; i&lt;span class="operator"&gt;++)&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;i&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;". "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;lines&lt;span class="operator"&gt;[&lt;/span&gt;i&lt;span class="operator"&gt;]&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Output as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-s-e1EBBcvq8/TYdnjSYmbKI/AAAAAAAADF0/9qqUBbOnul8/s1600/zg_FilesRead_vector01.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://1.bp.blogspot.com/-s-e1EBBcvq8/TYdnjSYmbKI/AAAAAAAADF0/9qqUBbOnul8/s400/zg_FilesRead_vector01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586547718704491682" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-5018848032730537253?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/luO3AqGuqdkH3fYzZilhCnXW1Xs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/luO3AqGuqdkH3fYzZilhCnXW1Xs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/luO3AqGuqdkH3fYzZilhCnXW1Xs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/luO3AqGuqdkH3fYzZilhCnXW1Xs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/ivukMtkOQFQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/5018848032730537253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/03/reading-files-into-vector.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/5018848032730537253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/5018848032730537253?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/ivukMtkOQFQ/reading-files-into-vector.html" title="Reading Files into Vector" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-s-e1EBBcvq8/TYdnjSYmbKI/AAAAAAAADF0/9qqUBbOnul8/s72-c/zg_FilesRead_vector01.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/03/reading-files-into-vector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQAQX06fSp7ImA9Wx9aFUs.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-9112234987970078145</id><published>2011-03-08T06:39:00.000Z</published><updated>2011-03-08T06:39:00.315Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-08T06:39:00.315Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="String Split" /><category scheme="http://www.blogger.com/atom/ns#" term="String Convert" /><category scheme="http://www.blogger.com/atom/ns#" term="String Stream" /><category scheme="http://www.blogger.com/atom/ns#" term="Switch Case" /><category scheme="http://www.blogger.com/atom/ns#" term="String" /><title>Switch Case using string</title><content type="html">&lt;div&gt;When I started thinking of this example, I also faced some of the other problems that I have encountered in my initial days of C++. One of these problems was how to convert String to multiple Ints and how to split strings easily, etc. Hopefully you will find the example useful.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include&amp;lt;string&amp;gt;&lt;br /&gt;#include&amp;lt;sstream&amp;gt;&lt;br /&gt;#include&amp;lt;map&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; split&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; input&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; num1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; operation&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;int&lt;/span&gt; calculate&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; num1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; string operation&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; string s&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt;5&lt;/span&gt;&lt;span class="operator"&gt;] = {&lt;/span&gt;&lt;span class="string"&gt;"2 + 2"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; "4 - 1"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; "4 * 6"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; "18 / 3"&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; "12 ^ 2"&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; i&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="int"&gt; 5&lt;/span&gt;&lt;span class="operator"&gt; ;&lt;/span&gt; i&lt;span class="operator"&gt;++)&lt;br /&gt; {&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;   int&lt;/span&gt; num1&lt;span class="operator"&gt;=&lt;/span&gt;&lt;span class="int"&gt;0&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; num2&lt;span class="operator"&gt;=&lt;/span&gt;&lt;span class="int"&gt;0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;   string op&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;   split&lt;span class="operator"&gt;(&lt;/span&gt;s&lt;span class="operator"&gt;[&lt;/span&gt;i&lt;span class="operator"&gt;],&lt;/span&gt; num1&lt;span class="operator"&gt;,&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; op&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;   int&lt;/span&gt; retVal&lt;span class="operator"&gt; =&lt;/span&gt; calculate&lt;span class="operator"&gt;(&lt;/span&gt;num1&lt;span class="operator"&gt;,&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; op&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;s&lt;span class="operator"&gt;[&lt;/span&gt;i&lt;span class="operator"&gt;]&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;" = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;retVal&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; split&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; input&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; num1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; operation&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; istringstream iss&lt;span class="operator"&gt;(&lt;/span&gt;input&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; iss&lt;span class="operator"&gt; &amp;gt;&amp;gt;&lt;/span&gt; num1&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; iss&lt;span class="operator"&gt; &amp;gt;&amp;gt;&lt;/span&gt; operation&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; iss&lt;span class="operator"&gt; &amp;gt;&amp;gt;&lt;/span&gt; num2&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt; calculate&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt; num1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; num2&lt;span class="operator"&gt;,&lt;/span&gt; string operation&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt; enum&lt;/span&gt; Operators&lt;span class="operator"&gt; {&lt;/span&gt;unknown&lt;span class="operator"&gt;,&lt;/span&gt; add&lt;span class="operator"&gt;,&lt;/span&gt; sub&lt;span class="operator"&gt;,&lt;/span&gt; mul&lt;span class="operator"&gt;,&lt;/span&gt; div&lt;span class="operator"&gt;};&lt;/span&gt;&lt;br /&gt; map&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;string&lt;span class="operator"&gt;,&lt;/span&gt; Operators&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; mapOfOperators&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; mapOfOperators&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"+"&lt;/span&gt;&lt;span class="operator"&gt;] =&lt;/span&gt; add&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; mapOfOperators&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"-"&lt;/span&gt;&lt;span class="operator"&gt;] =&lt;/span&gt; sub&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; mapOfOperators&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"*"&lt;/span&gt;&lt;span class="operator"&gt;] =&lt;/span&gt; mul&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; mapOfOperators&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="string"&gt;"/"&lt;/span&gt;&lt;span class="operator"&gt;] =&lt;/span&gt; div&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; switch&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;mapOfOperators&lt;span class="operator"&gt;[&lt;/span&gt;operation&lt;span class="operator"&gt;])&lt;br /&gt; {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; case&lt;/span&gt; add&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   return&lt;/span&gt; num1&lt;span class="operator"&gt; +&lt;/span&gt; num2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; case&lt;/span&gt; sub&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   return&lt;/span&gt; num1&lt;span class="operator"&gt; -&lt;/span&gt; num2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; case&lt;/span&gt; mul&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   return&lt;/span&gt; num1&lt;span class="operator"&gt; *&lt;/span&gt; num2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; case&lt;/span&gt; div&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   return&lt;/span&gt; num1&lt;span class="operator"&gt; /&lt;/span&gt; num2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; default&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Unrecognised Operator "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;operation&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-6eLolpDL40g/TXEVxBbj91I/AAAAAAAADEM/NH7I_FSQxDc/s1600/zg_SwitchForStrings.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 170px;" src="http://3.bp.blogspot.com/-6eLolpDL40g/TXEVxBbj91I/AAAAAAAADEM/NH7I_FSQxDc/s400/zg_SwitchForStrings.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5580265345230567250" /&gt;&lt;/a&gt;See Also: &lt;a href="http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4067"&gt;Codeguru article&lt;/a&gt; on 'Switch on Strings in C++'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-9112234987970078145?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DzWrYLGVwYKPFcqEH5IGJKR8nBI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DzWrYLGVwYKPFcqEH5IGJKR8nBI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DzWrYLGVwYKPFcqEH5IGJKR8nBI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DzWrYLGVwYKPFcqEH5IGJKR8nBI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/4dIlwR2VT9g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/9112234987970078145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/03/switch-case-using-string.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/9112234987970078145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/9112234987970078145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/4dIlwR2VT9g/switch-case-using-string.html" title="Switch Case using string" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-6eLolpDL40g/TXEVxBbj91I/AAAAAAAADEM/NH7I_FSQxDc/s72-c/zg_SwitchForStrings.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/03/switch-case-using-string.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cBQXcyeyp7ImA9Wx9aEk8.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-4752395575859459159</id><published>2011-03-04T06:59:00.004Z</published><updated>2011-03-04T07:50:50.993Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-04T07:50:50.993Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="String Erase" /><category scheme="http://www.blogger.com/atom/ns#" term="String" /><title>Removing all white-spaces from a string</title><content type="html">&lt;div&gt;Continuing on the same theme as the &lt;a href="http://advancedcppwithexamples.blogspot.com/2011/03/removing-multiple-white-spaces-from.html"&gt;last post&lt;/a&gt;. What if all the spaces need to be stripped out from the input string:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include&amp;lt;string&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;string removeAllSpaces&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; s&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; string newStr&lt;span class="operator"&gt;(&lt;/span&gt;s&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; bool&lt;/span&gt; spacesLeft&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;spacesLeft&lt;span class="operator"&gt;)&lt;br /&gt; {&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;   int&lt;/span&gt; pos&lt;span class="operator"&gt; =&lt;/span&gt; newStr&lt;span class="operator"&gt;.&lt;/span&gt;find&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;" "&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;pos&lt;span class="operator"&gt; !=&lt;/span&gt; string&lt;span class="operator"&gt;::&lt;/span&gt;npos&lt;span class="operator"&gt;)&lt;br /&gt;   {&lt;/span&gt;&lt;br /&gt;     newStr&lt;span class="operator"&gt;.&lt;/span&gt;erase&lt;span class="operator"&gt;(&lt;/span&gt;pos&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;);&lt;br /&gt;   }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;   else&lt;/span&gt;&lt;br /&gt;     spacesLeft&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt; newStr&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; string aString&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"This  string   has        multiple spaces     problem!"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Original : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;aString&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Modified : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;removeAllSpaces&lt;span class="operator"&gt;(&lt;/span&gt;aString&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-zfVbo8AezKQ/TWJ97BOPiFI/AAAAAAAADCc/3jdFQHTSMw4/s1600/zg_noWhiteSpaces.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 73px;" src="http://4.bp.blogspot.com/-zfVbo8AezKQ/TWJ97BOPiFI/AAAAAAAADCc/3jdFQHTSMw4/s400/zg_noWhiteSpaces.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5576157741532022866" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-4752395575859459159?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-5mNkk1ziaQG_fclBp38ggrv7To/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-5mNkk1ziaQG_fclBp38ggrv7To/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-5mNkk1ziaQG_fclBp38ggrv7To/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-5mNkk1ziaQG_fclBp38ggrv7To/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/3odNsIl8CJU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/4752395575859459159/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/03/removing-all-white-spaces-from-string.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4752395575859459159?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4752395575859459159?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/3odNsIl8CJU/removing-all-white-spaces-from-string.html" title="Removing all white-spaces from a string" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-zfVbo8AezKQ/TWJ97BOPiFI/AAAAAAAADCc/3jdFQHTSMw4/s72-c/zg_noWhiteSpaces.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/03/removing-all-white-spaces-from-string.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cEQXY6eyp7ImA9Wx9bGUs.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-4114088314178483881</id><published>2011-03-01T06:30:00.002Z</published><updated>2011-03-01T06:30:00.813Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-01T06:30:00.813Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="String Replace" /><category scheme="http://www.blogger.com/atom/ns#" term="String" /><title>Removing Multiple White-spaces from a string</title><content type="html">&lt;div&gt;A simple program to remove an arbitrary number of white spaces in between words. Program as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include&amp;lt;string&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;bool&lt;/span&gt; removeDoubleSpaces&lt;span class="operator"&gt;(&lt;/span&gt;string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; s&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  bool&lt;/span&gt; found&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;  int&lt;/span&gt; i&lt;span class="operator"&gt; =&lt;/span&gt; s&lt;span class="operator"&gt;.&lt;/span&gt;find&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"  "&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="comment"&gt; //Search for 2 spaces&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;  if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;i&lt;span class="operator"&gt; !=&lt;/span&gt; string&lt;span class="operator"&gt;::&lt;/span&gt;npos&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    s&lt;span class="operator"&gt;.&lt;/span&gt;replace&lt;span class="operator"&gt;(&lt;/span&gt;i&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 2&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="string"&gt; " "&lt;/span&gt;&lt;span class="operator"&gt;);&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  else&lt;/span&gt;&lt;br /&gt;    found&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt; found&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;string removeMultipleSpaces&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; s&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  string newStr&lt;span class="operator"&gt;(&lt;/span&gt;s&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  bool&lt;/span&gt; found&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;found&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    found&lt;span class="operator"&gt; =&lt;/span&gt; removeDoubleSpaces&lt;span class="operator"&gt;(&lt;/span&gt;newStr&lt;span class="operator"&gt;);&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt; newStr&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; &lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  string aString&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"This  string   has        multiple spaces     problem!"&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Original : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;aString&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Modified : "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;removeMultipleSpaces&lt;span class="operator"&gt;(&lt;/span&gt;aString&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt; &lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-s2G6bD8SUH0/TWJ3a-EHvvI/AAAAAAAADCU/R87G05wu1qI/s1600/zg_multipleWhiteSpaces.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 85px;" src="http://3.bp.blogspot.com/-s2G6bD8SUH0/TWJ3a-EHvvI/AAAAAAAADCU/R87G05wu1qI/s400/zg_multipleWhiteSpaces.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5576150593858682610" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-4114088314178483881?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NONCxZYNMn6FFy1IjAaIi8PgIsc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NONCxZYNMn6FFy1IjAaIi8PgIsc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NONCxZYNMn6FFy1IjAaIi8PgIsc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NONCxZYNMn6FFy1IjAaIi8PgIsc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/9HIyrWKHH74" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/4114088314178483881/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/03/removing-multiple-white-spaces-from.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4114088314178483881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4114088314178483881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/9HIyrWKHH74/removing-multiple-white-spaces-from.html" title="Removing Multiple White-spaces from a string" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-s2G6bD8SUH0/TWJ3a-EHvvI/AAAAAAAADCU/R87G05wu1qI/s72-c/zg_multipleWhiteSpaces.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/03/removing-multiple-white-spaces-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MMQXw_fSp7ImA9Wx9bE0g.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-2748545879812269572</id><published>2011-02-22T06:18:00.000Z</published><updated>2011-02-22T06:18:00.245Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-22T06:18:00.245Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Templates" /><category scheme="http://www.blogger.com/atom/ns#" term="Sorting" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><category scheme="http://www.blogger.com/atom/ns#" term="Functors" /><category scheme="http://www.blogger.com/atom/ns#" term="Vector" /><title>A generic sort program with 'functors' and 'templates'</title><content type="html">&lt;div&gt;Picked up this question from &lt;a href="http://stackoverflow.com/questions/4864214/functor-and-templates"&gt;here&lt;/a&gt; and made a program out of it. It may be a good idea to quickly brush &lt;a href="http://advancedcppwithexamples.blogspot.com/2010/04/example-of-functors.html"&gt;functors&lt;/a&gt; and &lt;a href="http://advancedcppwithexamples.blogspot.com/2009/03/example-of-c-templates.html"&gt;templates&lt;/a&gt; if required.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The program sorts the input Vector provided regardless of the type.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;&lt;br /&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;vector&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;algorithm&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Int&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;  Int&lt;span class="operator"&gt;() {&lt;/span&gt;x_&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;br /&gt;  Int&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt;x&lt;span class="operator"&gt;) {&lt;/span&gt;x_&lt;span class="operator"&gt; =&lt;/span&gt; x&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; getID&lt;span class="operator"&gt; (&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {&lt;/span&gt;&lt;span class="flow"&gt;return&lt;/span&gt; x_&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; x_&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Str&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;  Str&lt;span class="operator"&gt;() {&lt;/span&gt;x_&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="string"&gt; ""&lt;/span&gt;&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;br /&gt;  Str&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt;x&lt;span class="operator"&gt;) {&lt;/span&gt;x_&lt;span class="operator"&gt; =&lt;/span&gt; x&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;br /&gt;  string getID&lt;span class="operator"&gt; (&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {&lt;/span&gt;&lt;span class="flow"&gt;return&lt;/span&gt; x_&lt;span class="operator"&gt;;}&lt;/span&gt;&lt;br /&gt;  string x_&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;template&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;typename&lt;/span&gt; Object&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="keyword"&gt; class&lt;/span&gt; Comparator&lt;span class="operator"&gt; {&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;  public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;    bool&lt;/span&gt;&lt;span class="keyword"&gt; operator&lt;/span&gt;&lt;span class="operator"&gt;()(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; Object&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt;o1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="keyword"&gt; const&lt;/span&gt; Object&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt;o2&lt;span class="operator"&gt;)&lt;/span&gt;&lt;span class="keyword"&gt; const&lt;/span&gt;&lt;span class="operator"&gt; &lt;br /&gt;    {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      return&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;&lt;span class="keyword"&gt;const_cast&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Object&lt;span class="operator"&gt;&amp;amp;&amp;gt;(&lt;/span&gt;o1&lt;span class="operator"&gt;).&lt;/span&gt;getID&lt;span class="operator"&gt;() &amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt; const_cast&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Object&lt;span class="operator"&gt;&amp;amp;&amp;gt;(&lt;/span&gt;o2&lt;span class="operator"&gt;).&lt;/span&gt;getID&lt;span class="operator"&gt;());&lt;br /&gt;    }&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;    bool&lt;/span&gt;&lt;span class="keyword"&gt; operator&lt;/span&gt;&lt;span class="operator"&gt;()(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; Object&lt;span class="operator"&gt; *&lt;/span&gt;o1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="keyword"&gt; const&lt;/span&gt; Object&lt;span class="operator"&gt; *&lt;/span&gt;o2&lt;span class="operator"&gt;)&lt;/span&gt;&lt;span class="keyword"&gt; const&lt;/span&gt;&lt;span class="operator"&gt; {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      return&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;o1&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;getID&lt;span class="operator"&gt;() &amp;lt;&lt;/span&gt; o2&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;getID&lt;span class="operator"&gt;());&lt;br /&gt;    }&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;template&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;typename&lt;/span&gt; VecObject&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt;&lt;span class="type"&gt; void&lt;/span&gt; Display&lt;span class="operator"&gt;(&lt;/span&gt;VecObject v&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  VecObject&lt;span class="operator"&gt;::&lt;/span&gt;iterator it&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  for&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;it&lt;span class="operator"&gt; =&lt;/span&gt; v&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;();&lt;/span&gt; it&lt;span class="operator"&gt; !=&lt;/span&gt; v&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(); ++&lt;/span&gt;it&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;it&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;getID&lt;span class="operator"&gt;()&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;  }&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Int&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; objects1&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  objects1&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Int&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;3&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  objects1&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Int&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt;  objects1&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Int&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;77&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;  //print the output&lt;br /&gt;&lt;/span&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"objects1 before sort = "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  Display&lt;span class="operator"&gt;(&lt;/span&gt;objects1&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  std&lt;span class="operator"&gt;::&lt;/span&gt;sort&lt;span class="operator"&gt;(&lt;/span&gt;objects1&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; objects1&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; Comparator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Int&lt;span class="operator"&gt;&amp;gt; ());&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"objects1 after sort  = "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  Display&lt;span class="operator"&gt;(&lt;/span&gt;objects1&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  std&lt;span class="operator"&gt;::&lt;/span&gt;vector&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Str&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; objects2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  objects2&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Str&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"Hello Hello"&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  objects2&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Str&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"apple?"&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;  objects2&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Str&lt;span class="operator"&gt;());&lt;/span&gt;&lt;br /&gt;  objects2&lt;span class="operator"&gt;.&lt;/span&gt;push_back&lt;span class="operator"&gt;(&lt;/span&gt;Str&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="string"&gt;"1 Jump"&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;  //print the output&lt;br /&gt;&lt;/span&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"objects2 before sort = "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  Display&lt;span class="operator"&gt;(&lt;/span&gt;objects2&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  std&lt;span class="operator"&gt;::&lt;/span&gt;sort&lt;span class="operator"&gt;(&lt;/span&gt;objects2&lt;span class="operator"&gt;.&lt;/span&gt;begin&lt;span class="operator"&gt;(),&lt;/span&gt; objects2&lt;span class="operator"&gt;.&lt;/span&gt;end&lt;span class="operator"&gt;(),&lt;/span&gt; Comparator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;Str&lt;span class="operator"&gt;&amp;gt; ());&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"objects2 after sort  = "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  Display&lt;span class="operator"&gt;(&lt;/span&gt;objects2&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mAJDMuyu_WI/TUmqCBu0PsI/AAAAAAAADA0/j2B8zFBRptg/s1600/zg_sort_functor_template.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 114px;" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/TUmqCBu0PsI/AAAAAAAADA0/j2B8zFBRptg/s400/zg_sort_functor_template.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5569169366021586626" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-2748545879812269572?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YT_1eLGerL9i09SbQWE3TZ8bQUU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YT_1eLGerL9i09SbQWE3TZ8bQUU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YT_1eLGerL9i09SbQWE3TZ8bQUU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YT_1eLGerL9i09SbQWE3TZ8bQUU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/daPb3l7uJWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/2748545879812269572/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/02/generic-sort-program-with-functors-and.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2748545879812269572?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2748545879812269572?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/daPb3l7uJWU/generic-sort-program-with-functors-and.html" title="A generic sort program with 'functors' and 'templates'" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_mAJDMuyu_WI/TUmqCBu0PsI/AAAAAAAADA0/j2B8zFBRptg/s72-c/zg_sort_functor_template.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/02/generic-sort-program-with-functors-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMMQXw6cSp7ImA9Wx9UF0g.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-3128714103676154092</id><published>2011-02-15T06:48:00.000Z</published><updated>2011-02-15T06:48:00.219Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-15T06:48:00.219Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mutex" /><category scheme="http://www.blogger.com/atom/ns#" term="Timers" /><category scheme="http://www.blogger.com/atom/ns#" term="Debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="Thread Synchronisation" /><title>Debugging Mutex and Locks</title><content type="html">&lt;div&gt;When there are multiple Mutex's in the program, it may be required to find if a particular thread is locked far longer than necessary. This can cause problems and the output may not be what is expected. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To get round this, I took an old example from &lt;a href="http://advancedcppwithexamples.blogspot.com/2009/05/another-multi-threading-example-with.html"&gt;here&lt;/a&gt; and modified it to help me print some debugging info.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I modified the printSomething() in Singleton.h to add a sleep as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="type"&gt;  void&lt;/span&gt; printSomething&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;char&lt;/span&gt;&lt;span class="operator"&gt; *&lt;/span&gt;name&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt; count&lt;span class="operator"&gt;)&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   Lock guard&lt;span class="operator"&gt;(&lt;/span&gt;mutex_&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;   Sleep&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;   Lock guard2&lt;span class="operator"&gt;(&lt;/span&gt;mutex_&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;   std&lt;span class="operator"&gt;::&lt;/span&gt;cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; name&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " loop "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; count&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; std&lt;span class="operator"&gt;::&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and I modified the Mutex.h as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Example from http://www.relisoft.com/Win32/active.html&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#if !defined _MUTEX_H_&lt;br /&gt;#define _MUTEX_H_&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;class&lt;/span&gt; Mutex&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;   friend class&lt;/span&gt; Lock&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;   Mutex&lt;span class="operator"&gt; () {&lt;/span&gt; InitializeCriticalSection&lt;span class="operator"&gt; (&amp;amp;&lt;/span&gt; _critSection&lt;span class="operator"&gt;); }&lt;br /&gt;   ~&lt;/span&gt;Mutex&lt;span class="operator"&gt; () {&lt;/span&gt; DeleteCriticalSection&lt;span class="operator"&gt; (&amp;amp;&lt;/span&gt; _critSection&lt;span class="operator"&gt;); }&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;   void&lt;/span&gt; Acquire&lt;span class="operator"&gt; ()&lt;br /&gt;   {&lt;/span&gt;&lt;br /&gt;     DWORD start&lt;span class="operator"&gt; =&lt;/span&gt; GetTickCount&lt;span class="operator"&gt;();&lt;/span&gt;&lt;br /&gt;     EnterCriticalSection&lt;span class="operator"&gt; (&amp;amp;&lt;/span&gt; _critSection&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;     DWORD elapsed&lt;span class="operator"&gt; =&lt;/span&gt; GetTickCount&lt;span class="operator"&gt;() -&lt;/span&gt; start&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;     if&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;elapsed&lt;span class="operator"&gt; &amp;gt;&lt;/span&gt;&lt;span class="int"&gt; 15&lt;/span&gt;&lt;span class="operator"&gt;)&lt;br /&gt;     {&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;       //Debugging Info&lt;br /&gt;&lt;/span&gt;        std&lt;span class="operator"&gt;::&lt;/span&gt;cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Debugging Info: Waited at mutex for "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;elapsed&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;std&lt;span class="operator"&gt;::&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;     }&lt;br /&gt;   }&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;   void&lt;/span&gt; Release&lt;span class="operator"&gt; ()&lt;br /&gt;   {&lt;/span&gt;&lt;br /&gt;       LeaveCriticalSection&lt;span class="operator"&gt; (&amp;amp;&lt;/span&gt; _critSection&lt;span class="operator"&gt;);&lt;br /&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   CRITICAL_SECTION _critSection&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;&lt;br /&gt;#endif &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mAJDMuyu_WI/TUmnJ-QeRfI/AAAAAAAADAs/UrhDbLCztCo/s1600/zg_mutex_debug.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://1.bp.blogspot.com/_mAJDMuyu_WI/TUmnJ-QeRfI/AAAAAAAADAs/UrhDbLCztCo/s400/zg_mutex_debug.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5569166203993081330" /&gt;&lt;/a&gt;The small problem with the above approach is that if a Thread is deadlocked, we may not get the debug output as we would have to kill the process.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-3128714103676154092?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZO8RK00xzjzmuzWrobPQqRpEc0I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZO8RK00xzjzmuzWrobPQqRpEc0I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZO8RK00xzjzmuzWrobPQqRpEc0I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZO8RK00xzjzmuzWrobPQqRpEc0I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/UTIObVr6PoA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/3128714103676154092/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/02/debugging-mutex-and-locks.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3128714103676154092?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/3128714103676154092?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/UTIObVr6PoA/debugging-mutex-and-locks.html" title="Debugging Mutex and Locks" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_mAJDMuyu_WI/TUmnJ-QeRfI/AAAAAAAADAs/UrhDbLCztCo/s72-c/zg_mutex_debug.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/02/debugging-mutex-and-locks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEAQXw5fyp7ImA9Wx9UEk4.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-8374027538686303656</id><published>2011-02-09T06:24:00.004Z</published><updated>2011-02-09T06:24:00.227Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-09T06:24:00.227Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mathematical Operations" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><category scheme="http://www.blogger.com/atom/ns#" term="Bitwise Operators" /><title>Add two unsigned integers without using '+'</title><content type="html">I found this very interesting discussion (and the program) to add two numbers without the use of the arithmetic operator '+'. The obvious guess would be to use the &lt;a href="http://www.cplusplus.com/doc/tutorial/operators/"&gt;Bitwise operators&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The logic behind the addition operation using the bitwise operators is as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre&gt;integer1&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt;  3&lt;/span&gt;&lt;span class="operator"&gt;  =&lt;/span&gt; 0011b&lt;br /&gt;integer2&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt;  5&lt;/span&gt;&lt;span class="operator"&gt;  =&lt;/span&gt; 0101b&lt;br /&gt;&lt;br /&gt;    first operation        second operation      third operation&lt;span class="int"&gt;&lt;br /&gt;        0011                0011&lt;/span&gt;                 shift by one&lt;span class="int"&gt;&lt;br /&gt;        0101                0101&lt;/span&gt;                   &lt;br /&gt;       ______              ______&lt;br /&gt; XOR&lt;span class="int"&gt;    0110&lt;/span&gt;           AND&lt;span class="int"&gt;  0001&lt;/span&gt;&lt;span class="operator"&gt;  ------&amp;gt;        &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1   0010&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Again&lt;span class="operator"&gt;...&lt;/span&gt;  &lt;br /&gt;                   first operation   second operation   third operation&lt;br /&gt;previous XOR&lt;span class="int"&gt;        0110                0110&lt;/span&gt;            shift by one&lt;br /&gt;previous&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1        0010                0010&lt;/span&gt;&lt;br /&gt;                   ______              ______&lt;br /&gt;               XOR&lt;span class="int"&gt;  0100&lt;/span&gt;            AND&lt;span class="int"&gt; 0010&lt;/span&gt;&lt;span class="operator"&gt;  ------&amp;gt;  &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1   0100&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Again&lt;span class="operator"&gt;...&lt;/span&gt;  &lt;br /&gt;                   first operation  second operation    third operation&lt;br /&gt;previous XOR&lt;span class="int"&gt;        0100                0100&lt;/span&gt;            shift by one&lt;br /&gt;previous&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1        0100                0100&lt;/span&gt;&lt;br /&gt;                   ______              ______&lt;br /&gt;                XOR&lt;span class="int"&gt; 0000&lt;/span&gt;           AND&lt;span class="int"&gt;  0100&lt;/span&gt;&lt;span class="operator"&gt;  ------&amp;gt;  &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1   1000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    Again&lt;span class="operator"&gt;...&lt;/span&gt;  &lt;br /&gt;                   first operation   second operation   &lt;br /&gt;previous XOR&lt;span class="int"&gt;        0000               0000&lt;/span&gt;            &lt;br /&gt;previous&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="int"&gt;1        1000               1000&lt;/span&gt;&lt;br /&gt;                    ______            ______&lt;br /&gt;                XOR&lt;span class="int"&gt; 1000&lt;/span&gt;          AND&lt;span class="int"&gt;  0000&lt;/span&gt;  &lt;br /&gt;When AND iguals&lt;span class="int"&gt; 0&lt;/span&gt; the result of XOR is iqual to the sum of the two integers&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The program is as follows:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program to add two numbers by using boolean operators&lt;br /&gt;//Ref: http://www.daniweb.com/forums/thread84950.html&lt;br /&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;unsigned long&lt;/span&gt; add&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;unsigned&lt;/span&gt; integer1&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; unsigned&lt;/span&gt; integer2&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  unsigned long&lt;/span&gt;&lt;span class="operator"&gt; xor&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="operator"&gt; and&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; temp&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;&lt;br /&gt;  and&lt;/span&gt;&lt;span class="operator"&gt; =&lt;/span&gt; integer1&lt;span class="operator"&gt; &amp;amp;&lt;/span&gt; integer2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* Obtain the carry bits */&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;  xor&lt;/span&gt;&lt;span class="operator"&gt; =&lt;/span&gt; integer1&lt;span class="operator"&gt; ^&lt;/span&gt; integer2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* resulting bits */&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    &lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="operator"&gt;and&lt;/span&gt;&lt;span class="operator"&gt; !=&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt; )&lt;/span&gt;&lt;span class="comment"&gt; /* stop when carry bits are gone */&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;  {&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;    and&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;=&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* shifting the carry bits one space */&lt;/span&gt;&lt;br /&gt;    temp&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="operator"&gt; xor&lt;/span&gt;&lt;span class="operator"&gt; ^&lt;/span&gt;&lt;span class="operator"&gt; and&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* hold the new xor result bits*/&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;    and&lt;/span&gt;&lt;span class="operator"&gt; &amp;amp;=&lt;/span&gt;&lt;span class="operator"&gt; xor&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* clear the previous carry bits and assign the new carry bits */&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;    xor&lt;/span&gt;&lt;span class="operator"&gt; =&lt;/span&gt; temp&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* resulting bits */&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="operator"&gt; xor&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; /* final result */&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; num1&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 13&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; num2&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 27&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; num1&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " + "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt; num2&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt; " = "&lt;/span&gt;&lt;span class="operator"&gt; &amp;lt;&amp;lt;&lt;/span&gt;add&lt;span class="operator"&gt;(&lt;/span&gt;num1&lt;span class="operator"&gt;,&lt;/span&gt; num2&lt;span class="operator"&gt;) &amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The output is:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;13 + 27 = 40&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See the original discussion &lt;a href="http://www.daniweb.com/forums/thread84950.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-8374027538686303656?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oTmMgPvEeyD9CjqJJqlwf3BXXC8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oTmMgPvEeyD9CjqJJqlwf3BXXC8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oTmMgPvEeyD9CjqJJqlwf3BXXC8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oTmMgPvEeyD9CjqJJqlwf3BXXC8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/KxaSVUeAe28" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/8374027538686303656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/02/add-two-unsigned-integers-without-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/8374027538686303656?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/8374027538686303656?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/KxaSVUeAe28/add-two-unsigned-integers-without-using.html" title="Add two unsigned integers without using '+'" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/02/add-two-unsigned-integers-without-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EEQXc-eCp7ImA9Wx9VFk4.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-4084942520874461866</id><published>2011-02-02T06:42:00.005Z</published><updated>2011-02-02T08:33:20.950Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-02T08:33:20.950Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Derived Class" /><category scheme="http://www.blogger.com/atom/ns#" term="Base Class" /><category scheme="http://www.blogger.com/atom/ns#" term="Labels" /><category scheme="http://www.blogger.com/atom/ns#" term="Debugging" /><title>Consequences of Ignoring Compiler Warnings</title><content type="html">&lt;div&gt;Though this is a fictional program that I have picked up from &lt;a href="http://www.velocityreviews.com/forums/t645621-c-puzzle.html"&gt;here&lt;/a&gt;, I have seen similar problems in real life.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lets say my program (below) was expected to return this&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mAJDMuyu_WI/TT1YtstaBKI/AAAAAAAADAQ/4APw4AFVIO8/s1600/zg_labels2_expected.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 389px; height: 153px;" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/TT1YtstaBKI/AAAAAAAADAQ/4APw4AFVIO8/s400/zg_labels2_expected.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565702256618767522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;but instead returned:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mAJDMuyu_WI/TT1YtmjhIMI/AAAAAAAADAI/ZYgXjHQE7lg/s1600/zg_labels2_unexpected.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 357px; height: 321px;" src="http://3.bp.blogspot.com/_mAJDMuyu_WI/TT1YtmjhIMI/AAAAAAAADAI/ZYgXjHQE7lg/s400/zg_labels2_unexpected.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565702254966677698" /&gt;&lt;/a&gt;Program as follows:&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Bclass&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt; Bclass&lt;span class="operator"&gt;() {}&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt; virtual&lt;/span&gt;&lt;span class="type"&gt; void&lt;/span&gt; func&lt;span class="operator"&gt;()&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"In Bclass::func()"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt; }&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Dclass&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="keyword"&gt; public&lt;/span&gt; Bclass&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt; Dclass&lt;span class="operator"&gt;() {}&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt; virtual&lt;/span&gt;&lt;span class="type"&gt; void&lt;/span&gt; func&lt;span class="operator"&gt;()&lt;br /&gt; {&lt;/span&gt;&lt;br /&gt;   cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"In Dclass::func()"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;   Bclass&lt;span class="operator"&gt;:&lt;/span&gt;func&lt;span class="operator"&gt;();&lt;br /&gt; }&lt;br /&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt; Dclass d&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; d&lt;span class="operator"&gt;.&lt;/span&gt;func&lt;span class="operator"&gt;();&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt; //...&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The clue of the problem was given by the compiler that generated the following warning:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#CC0000;"&gt;main.cpp(23) : warning C4102: 'Bclass' : unreferenced label&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pointing to the line&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#000099;"&gt;Bclass:func();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem lies in the fact that due to a single : rather than :: the line above is being treated as label and since its an unreferenced label it goes back to the start of the same function.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can read the complete discussion &lt;a href="http://www.velocityreviews.com/forums/t645621-c-puzzle.html"&gt;here&lt;/a&gt;. Make sure to check the warnings the next time your program behaves unexpectedly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-4084942520874461866?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xyznp7RXs0MgUC6s7FUrAVq9ndo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xyznp7RXs0MgUC6s7FUrAVq9ndo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xyznp7RXs0MgUC6s7FUrAVq9ndo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xyznp7RXs0MgUC6s7FUrAVq9ndo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/21zRom0d3uM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/4084942520874461866/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/02/consequences-of-ignoring-compiler.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4084942520874461866?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/4084942520874461866?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/21zRom0d3uM/consequences-of-ignoring-compiler.html" title="Consequences of Ignoring Compiler Warnings" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_mAJDMuyu_WI/TT1YtstaBKI/AAAAAAAADAQ/4APw4AFVIO8/s72-c/zg_labels2_expected.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/02/consequences-of-ignoring-compiler.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUMQX09eSp7ImA9Wx9VEE8.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-2042196431114566691</id><published>2011-01-26T06:28:00.001Z</published><updated>2011-01-26T06:28:00.361Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-26T06:28:00.361Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Challenging Problems" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><category scheme="http://www.blogger.com/atom/ns#" term="Algorithms" /><title>Swap two variables without using third and in one line</title><content type="html">&lt;div&gt;Couple of weeks back I was interviewing a fresh graduate. Even though they are taught programming, I am not sure if they take it seriously and learn or practice it well. One of the questions I asked was to swap 2 numbers without using a temp variable.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking back now, I think it may be a bigger challenge to ask to swap numbers without using a temp variable and in one line. Below are my three different approaches but I would advise you to try it yourself before looking at the answer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program to swap 2 numbers without using 3rd variable and in one line&lt;br /&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; approach1&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; a&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; b&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nApproach 1"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  a&lt;span class="operator"&gt;^=&lt;/span&gt;b&lt;span class="operator"&gt;^=&lt;/span&gt;a&lt;span class="operator"&gt;^=&lt;/span&gt;b&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; approach2&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; a&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; b&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nApproach 2"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;  //b=(a+b)-(a=b); - This should work but doesnt, why?&lt;br /&gt;&lt;/span&gt;  a&lt;span class="operator"&gt; =((&lt;/span&gt;a&lt;span class="operator"&gt; =&lt;/span&gt; a&lt;span class="operator"&gt; +&lt;/span&gt; b&lt;span class="operator"&gt;) - (&lt;/span&gt;b&lt;span class="operator"&gt; =&lt;/span&gt; a&lt;span class="operator"&gt; -&lt;/span&gt; b&lt;span class="operator"&gt;)); &lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;void&lt;/span&gt; approach3&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; a&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="type"&gt; int&lt;/span&gt;&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; b&lt;span class="operator"&gt;)&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nApproach 3"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  a&lt;span class="operator"&gt; = ((&lt;/span&gt;a&lt;span class="operator"&gt; =&lt;/span&gt; a&lt;span class="operator"&gt; *&lt;/span&gt; b&lt;span class="operator"&gt;) / (&lt;/span&gt;b&lt;span class="operator"&gt; =&lt;/span&gt; a&lt;span class="operator"&gt; /&lt;/span&gt; b&lt;span class="operator"&gt;));&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; a&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 13&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 29&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nOriginal"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"a = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;a&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", b = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;b&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  approach1&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"a = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;a&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", b = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;b&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  a&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 13&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 29&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  approach2&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"a = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;a&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", b = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;b&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  a&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 13&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 29&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  approach3&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;,&lt;/span&gt; b&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"a = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;a&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;", b = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;b&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mAJDMuyu_WI/TT1VT4Oz4kI/AAAAAAAADAA/ClJY40UjY68/s1600/zg_swap.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://2.bp.blogspot.com/_mAJDMuyu_WI/TT1VT4Oz4kI/AAAAAAAADAA/ClJY40UjY68/s400/zg_swap.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565698514500182594" /&gt;&lt;/a&gt;Agreed that the above would be applicable only for integers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-2042196431114566691?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l0VNbqGsPl0qNjQimdKz9dN3I9g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l0VNbqGsPl0qNjQimdKz9dN3I9g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l0VNbqGsPl0qNjQimdKz9dN3I9g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l0VNbqGsPl0qNjQimdKz9dN3I9g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/zMcQBCgI1zc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/2042196431114566691/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/01/swap-two-variables-without-using-third.html#comment-form" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2042196431114566691?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/2042196431114566691?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/zMcQBCgI1zc/swap-two-variables-without-using-third.html" title="Swap two variables without using third and in one line" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_mAJDMuyu_WI/TT1VT4Oz4kI/AAAAAAAADAA/ClJY40UjY68/s72-c/zg_swap.jpg" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/01/swap-two-variables-without-using-third.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQEQXo_eyp7ImA9Wx9WFEw.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-7323830024920676783</id><published>2011-01-19T06:25:00.003Z</published><updated>2011-01-19T06:25:00.443Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-19T06:25:00.443Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Size" /><category scheme="http://www.blogger.com/atom/ns#" term="SizeOf" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><title>'sizeof' a class</title><content type="html">&lt;div&gt;Continuation from last week. What is the sizeof of a class? Wrote a simple program as follows:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; A&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; a&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; B&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; b&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; someFunc&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {&lt;/span&gt;&lt;span class="flow"&gt;return&lt;/span&gt; b&lt;span class="operator"&gt;;}&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; C&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  void&lt;/span&gt; someFunc1&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  void&lt;/span&gt; someFunc2&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {};&lt;br /&gt;};&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; D&lt;span class="operator"&gt; :&lt;/span&gt;&lt;span class="keyword"&gt; public&lt;/span&gt; A&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  void&lt;/span&gt; someFunc&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="type"&gt;void&lt;/span&gt;&lt;span class="operator"&gt;) {};&lt;br /&gt;};&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of class A = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;A&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of class B = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;B&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of class C = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;C&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of class D = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;D&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSxnsjx-7aI/AAAAAAAAC_A/94szs0E3KLA/s1600/zg_sizeof_class.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 317px; height: 181px;" src="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSxnsjx-7aI/AAAAAAAAC_A/94szs0E3KLA/s400/zg_sizeof_class.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5560933655112510882" /&gt;&lt;/a&gt;&lt;br /&gt;After finishing this, I found this interesting article &lt;a href="http://www.cprogramming.com/tutorial/size_of_class_object.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-7323830024920676783?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YuczoBLhQysxppQWdITnmqTrr0c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YuczoBLhQysxppQWdITnmqTrr0c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YuczoBLhQysxppQWdITnmqTrr0c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YuczoBLhQysxppQWdITnmqTrr0c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/q-YMYCHoYEg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/7323830024920676783/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/01/sizeof-class.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7323830024920676783?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/7323830024920676783?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/q-YMYCHoYEg/sizeof-class.html" title="'sizeof' a class" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSxnsjx-7aI/AAAAAAAAC_A/94szs0E3KLA/s72-c/zg_sizeof_class.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/01/sizeof-class.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGQXw4eCp7ImA9Wx9XGEw.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-5374878208927413310</id><published>2011-01-12T06:57:00.003Z</published><updated>2011-01-12T06:57:00.230Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-12T06:57:00.230Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Size" /><category scheme="http://www.blogger.com/atom/ns#" term="SizeOf" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><title>Checking the 'sizeof' doubts</title><content type="html">&lt;div&gt;I noticed sometime back that one of my programs behaved unexpectedly in certain scenarios which was traced to an incorrect use of sizeof. As a result, I made a small program to make sure that my understanding of sizeof is correct. Here is the program:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt; char&lt;/span&gt; a&lt;span class="operator"&gt;[]=&lt;/span&gt;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of a[] = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;a&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt; b&lt;span class="operator"&gt;[]=&lt;/span&gt;&lt;span class="string"&gt;" "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of b[ ] = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;b&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt; c&lt;span class="operator"&gt;[&lt;/span&gt;&lt;span class="int"&gt;10&lt;/span&gt;&lt;span class="operator"&gt;];&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of c[10] = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;c&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt;&lt;span class="operator"&gt;*&lt;/span&gt; d&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of d = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;d&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt;&lt;span class="operator"&gt;*&lt;/span&gt; e&lt;span class="operator"&gt; =&lt;/span&gt; c&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of e = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;e&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt; f&lt;span class="operator"&gt;[] =&lt;/span&gt;&lt;span class="string"&gt; "123456"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of f = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;f&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt; char&lt;/span&gt; g&lt;span class="operator"&gt;[] = {&lt;/span&gt;&lt;span class="char"&gt;'1'&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="char"&gt;'2'&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="char"&gt;'3'&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="char"&gt;'4'&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="char"&gt;'5'&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="char"&gt;'6'&lt;/span&gt;&lt;span class="operator"&gt;};&lt;/span&gt;&lt;br /&gt; cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Size of g = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="keyword"&gt;sizeof&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;g&lt;span class="operator"&gt;)&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt; return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows: &lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mAJDMuyu_WI/TSxidmXcL2I/AAAAAAAAC-4/W0iVie6b8bE/s1600/zg_sizeof.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 341px; height: 209px;" src="http://1.bp.blogspot.com/_mAJDMuyu_WI/TSxidmXcL2I/AAAAAAAAC-4/W0iVie6b8bE/s400/zg_sizeof.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5560927900550311778" /&gt;&lt;/a&gt;A lot of interviewers love the sizeof questions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have you come across any interesting sizeof problems? Please feel free to add them in comments.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-5374878208927413310?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JmkWi8SFiXMtdkSLPGNPH1VFCWI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmkWi8SFiXMtdkSLPGNPH1VFCWI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JmkWi8SFiXMtdkSLPGNPH1VFCWI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JmkWi8SFiXMtdkSLPGNPH1VFCWI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/HOGL47pYwNs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/5374878208927413310/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/01/checking-sizeof-doubts.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/5374878208927413310?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/5374878208927413310?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/HOGL47pYwNs/checking-sizeof-doubts.html" title="Checking the 'sizeof' doubts" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_mAJDMuyu_WI/TSxidmXcL2I/AAAAAAAAC-4/W0iVie6b8bE/s72-c/zg_sizeof.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/01/checking-sizeof-doubts.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUEQXwycCp7ImA9Wx9XEkw.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-635458219789341206</id><published>2011-01-05T06:50:00.002Z</published><updated>2011-01-05T06:50:00.298Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-05T06:50:00.298Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linked Lists" /><category scheme="http://www.blogger.com/atom/ns#" term="Cin" /><title>C++ example of Linked List implementation</title><content type="html">&lt;div&gt;It is debatable if Linked lists are needed in C++, especially because STL can do a very good job for the same functionality for which Linked Lists are required. Nevertheless sometimes it maybe convenient to know linked lists. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;string&amp;gt;&lt;br /&gt;#include &amp;lt;istream&amp;gt;&lt;br /&gt;#include &amp;lt;limits&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;&lt;br /&gt;class&lt;/span&gt; Node&lt;span class="operator"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;public&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;  Node&lt;span class="operator"&gt;() :&lt;/span&gt; next&lt;span class="operator"&gt;(&lt;/span&gt;NULL&lt;span class="operator"&gt;) {};&lt;/span&gt;&lt;span class="comment"&gt; //default constructor&lt;br /&gt;&lt;/span&gt;  Node&lt;span class="operator"&gt;(&lt;/span&gt;&lt;span class="keyword"&gt;const&lt;/span&gt; string&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; s1&lt;span class="operator"&gt;) :&lt;/span&gt; info&lt;span class="operator"&gt;(&lt;/span&gt;s1&lt;span class="operator"&gt;),&lt;/span&gt; next&lt;span class="operator"&gt;(&lt;/span&gt;NULL&lt;span class="operator"&gt;) {};&lt;/span&gt;&lt;br /&gt;  string info&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  Node&lt;span class="operator"&gt;*&lt;/span&gt; next&lt;span class="operator"&gt;;&lt;br /&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Node&lt;span class="operator"&gt;*&lt;/span&gt; getNewNode&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;  //Lets flush the input buffer first &lt;br /&gt;&lt;/span&gt;  istream&lt;span class="operator"&gt;&amp;amp;&lt;/span&gt; in&lt;span class="operator"&gt;(&lt;/span&gt;cin&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;  in&lt;span class="operator"&gt;.&lt;/span&gt;ignore&lt;span class="operator"&gt;(&lt;/span&gt; numeric_limits&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;std&lt;span class="operator"&gt;::&lt;/span&gt;streamsize&lt;span class="operator"&gt;&amp;gt;::&lt;/span&gt;max&lt;span class="operator"&gt;(),&lt;/span&gt;&lt;span class="char"&gt; '\n'&lt;/span&gt;&lt;span class="operator"&gt; );&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;  //Read the String from console&lt;br /&gt;&lt;/span&gt;  cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tEnter a string: "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;  istreambuf_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;char&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; eos&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt; // end-of-range iterator&lt;br /&gt;&lt;/span&gt;  istreambuf_iterator&lt;span class="operator"&gt;&amp;lt;&lt;/span&gt;&lt;span class="type"&gt;char&lt;/span&gt;&lt;span class="operator"&gt;&amp;gt;&lt;/span&gt; iit&lt;span class="operator"&gt; (&lt;/span&gt;cin&lt;span class="operator"&gt;.&lt;/span&gt;rdbuf&lt;span class="operator"&gt;());&lt;/span&gt;&lt;span class="comment"&gt; // stdin iterator&lt;br /&gt;&lt;/span&gt;  string s2&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt; (&lt;/span&gt;iit&lt;span class="operator"&gt;!=&lt;/span&gt;eos&lt;span class="operator"&gt; &amp;amp;&amp;amp; *&lt;/span&gt;iit&lt;span class="operator"&gt;!=&lt;/span&gt;&lt;span class="char"&gt;'\n'&lt;/span&gt;&lt;span class="operator"&gt;)&lt;/span&gt; s2&lt;span class="operator"&gt;+=*&lt;/span&gt;iit&lt;span class="operator"&gt;++;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;&lt;br /&gt;  //Call the constructor with the input string&lt;br /&gt;&lt;/span&gt;  Node&lt;span class="operator"&gt;*&lt;/span&gt; newNode&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="keyword"&gt; new&lt;/span&gt; Node&lt;span class="operator"&gt;(&lt;/span&gt;s2&lt;span class="operator"&gt;);&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  return&lt;/span&gt; newNode&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  Node&lt;span class="operator"&gt;*&lt;/span&gt; head&lt;span class="operator"&gt; =&lt;/span&gt; NULL&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  bool&lt;/span&gt; contFlag&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; true&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  char&lt;/span&gt; c&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;contFlag&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\n\n"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"0. Quit"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"1. Traverse and Print"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"2. Insert node at the start"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"3. Insert node at the end"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"4. Insert after specified number of nodes"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"5. Remove node from the start"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"6. Remove node from the end"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"7. Remove node from a specified number"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\nEnter your choice: "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cin&lt;span class="operator"&gt;&amp;gt;&amp;gt;&lt;/span&gt;c&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;    switch&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;c&lt;span class="operator"&gt;)&lt;br /&gt;    {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '0'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;      contFlag&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="bool"&gt; false&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '1'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; tempNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;        int&lt;/span&gt; count&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempNode&lt;span class="operator"&gt;)&lt;br /&gt;        {&lt;/span&gt;&lt;br /&gt;          cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tItem "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;count&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;" = "&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;info&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          tempNode&lt;span class="operator"&gt; =&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          count&lt;span class="operator"&gt;++;&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '2'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; newNode&lt;span class="operator"&gt; =&lt;/span&gt; getNewNode&lt;span class="operator"&gt;();&lt;/span&gt;&lt;br /&gt;        newNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;        head&lt;span class="operator"&gt; =&lt;/span&gt; newNode&lt;span class="operator"&gt;;&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '3'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; newNode&lt;span class="operator"&gt; =&lt;/span&gt; getNewNode&lt;span class="operator"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; endNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;endNode&lt;span class="operator"&gt;)&lt;br /&gt;        {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;          while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;endNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;)&lt;/span&gt;&lt;br /&gt;            endNode&lt;span class="operator"&gt; =&lt;/span&gt; endNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          endNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; newNode&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        else&lt;/span&gt;&lt;span class="comment"&gt; //In case its the first element&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;        {&lt;/span&gt;&lt;br /&gt;          head&lt;span class="operator"&gt; =&lt;/span&gt; newNode&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '4'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; tempNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempNode&lt;span class="operator"&gt;)&lt;br /&gt;        {&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;          unsigned&lt;/span&gt; num&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tInsert after how many nodes? : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          cin&lt;span class="operator"&gt;&amp;gt;&amp;gt;&lt;/span&gt;num&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          Node&lt;span class="operator"&gt;*&lt;/span&gt; newNode&lt;span class="operator"&gt; =&lt;/span&gt; getNewNode&lt;span class="operator"&gt;();&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;          unsigned&lt;/span&gt; count&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;          //If less elements are present then insert at the end&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;          while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; &amp;amp;&amp;amp; (&lt;/span&gt;count&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt; num&lt;span class="operator"&gt;))&lt;br /&gt;          {&lt;/span&gt;&lt;br /&gt;            tempNode&lt;span class="operator"&gt; =&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;            count&lt;span class="operator"&gt;++;&lt;br /&gt;          }&lt;/span&gt;&lt;br /&gt;          newNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; newNode&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        else&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;        {&lt;/span&gt;&lt;br /&gt;          cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tNo nodes present yet"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '5'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; firstNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;firstNode&lt;span class="operator"&gt;)&lt;br /&gt;        {&lt;/span&gt;&lt;br /&gt;          head&lt;span class="operator"&gt; =&lt;/span&gt; firstNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;          delete&lt;/span&gt; firstNode&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '6'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; endNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;endNode&lt;span class="operator"&gt;)&lt;/span&gt;&lt;span class="comment"&gt; //Atleast one element&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;        {&lt;/span&gt;&lt;br /&gt;          Node&lt;span class="operator"&gt;*&lt;/span&gt; endEndNode&lt;span class="operator"&gt; =&lt;/span&gt; endNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;          if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;endEndNode&lt;span class="operator"&gt;)&lt;/span&gt;&lt;span class="comment"&gt; //Atleast 2 elements&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;          {&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;            while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;endEndNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;)&lt;br /&gt;            {&lt;/span&gt;&lt;br /&gt;              endNode&lt;span class="operator"&gt; =&lt;/span&gt; endEndNode&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;              endEndNode&lt;span class="operator"&gt; =&lt;/span&gt; endEndNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;br /&gt;            }&lt;/span&gt;&lt;br /&gt;            endNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; NULL&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;            delete&lt;/span&gt; endEndNode&lt;span class="operator"&gt;;&lt;br /&gt;          }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;          else&lt;/span&gt;&lt;span class="comment"&gt; //Only one element&lt;br /&gt;&lt;/span&gt;&lt;span class="operator"&gt;          {&lt;/span&gt;&lt;br /&gt;            head&lt;span class="operator"&gt; =&lt;/span&gt; NULL&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;            delete&lt;/span&gt; endNode&lt;span class="operator"&gt;;&lt;br /&gt;          }&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    case&lt;/span&gt;&lt;span class="char"&gt; '7'&lt;/span&gt;&lt;span class="operator"&gt;:&lt;br /&gt;      {&lt;/span&gt;&lt;br /&gt;        Node&lt;span class="operator"&gt;*&lt;/span&gt; tempNode&lt;span class="operator"&gt; =&lt;/span&gt; head&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempNode&lt;span class="operator"&gt;)&lt;br /&gt;        {&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;          unsigned&lt;/span&gt; num&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tRemove after how many nodes? : "&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;          cin&lt;span class="operator"&gt;&amp;gt;&amp;gt;&lt;/span&gt;num&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;          unsigned&lt;/span&gt; count&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="comment"&gt;&lt;br /&gt;          //If less elements are present then return&lt;br /&gt;&lt;/span&gt;&lt;span class="flow"&gt;          while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; &amp;amp;&amp;amp; (&lt;/span&gt;count&lt;span class="operator"&gt; &amp;lt;&lt;/span&gt; num&lt;span class="operator"&gt;))&lt;br /&gt;          {&lt;/span&gt;&lt;br /&gt;            tempNode&lt;span class="operator"&gt; =&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;            count&lt;span class="operator"&gt;++;&lt;br /&gt;          }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;          if&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;count&lt;span class="operator"&gt; ==&lt;/span&gt; num&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; &amp;amp;&amp;amp;&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;)&lt;br /&gt;          {&lt;/span&gt;&lt;br /&gt;            Node&lt;span class="operator"&gt;*&lt;/span&gt; nodeToRemove&lt;span class="operator"&gt; =&lt;/span&gt; tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;            tempNode&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt; =&lt;/span&gt; nodeToRemove&lt;span class="operator"&gt;-&amp;gt;&lt;/span&gt;next&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;            delete&lt;/span&gt; nodeToRemove&lt;span class="operator"&gt;;&lt;br /&gt;          }&lt;br /&gt;        }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;        else&lt;/span&gt;&lt;span class="operator"&gt;&lt;br /&gt;        {&lt;/span&gt;&lt;br /&gt;          cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"\tNo nodes present yet"&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;        }&lt;br /&gt;      }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;      break&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    default&lt;/span&gt;&lt;span class="operator"&gt;:&lt;/span&gt;&lt;br /&gt;      cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="string"&gt;"Incorrect selection."&lt;/span&gt;&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;br /&gt;    }&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The output is as follows:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSMX6atUYDI/AAAAAAAAC9w/d9KVgW1T2eM/s1600/zg_LinkedList1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 212px; height: 400px;" src="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSMX6atUYDI/AAAAAAAAC9w/d9KVgW1T2eM/s400/zg_LinkedList1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5558312657474576434" /&gt;&lt;/a&gt;You can try more combinations and if you have ideas for improvements please add in the comments section.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Few things to note:&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. This program is for reference and I have not accounted for memory leaks after pressing '0'.&lt;/div&gt;&lt;div&gt;2. For simplicity, getNewNode() is shown as a seperate function. In a real program, it may be better as a method of class Node&lt;/div&gt;&lt;div&gt;3. General Linked Lists use Struct's but in C++, Structs and Classes are &lt;a href="http://advancedcppwithexamples.blogspot.com/2009/03/example-to-show-difference-between.html"&gt;nearly the same&lt;/a&gt; so its better to use Class.&lt;/div&gt;&lt;div&gt;4. In C++ there is rarely a need to use Linked Lists. Its better to use the STL which already have vectors, stacks, lists, etc.&lt;/div&gt;&lt;div&gt;5. There should be check for memory allocation and try catch blocks that have been ignored for simplicity&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-635458219789341206?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Rirls4uKsNVLDJK4F7VuhOMM9O8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rirls4uKsNVLDJK4F7VuhOMM9O8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Rirls4uKsNVLDJK4F7VuhOMM9O8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Rirls4uKsNVLDJK4F7VuhOMM9O8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/w_NA4PAdoto" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/635458219789341206/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2011/01/c-example-of-linked-list-implementation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/635458219789341206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/635458219789341206?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/w_NA4PAdoto/c-example-of-linked-list-implementation.html" title="C++ example of Linked List implementation" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_mAJDMuyu_WI/TSMX6atUYDI/AAAAAAAAC9w/d9KVgW1T2eM/s72-c/zg_LinkedList1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2011/01/c-example-of-linked-list-implementation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUAQXsycCp7ImA9Wx9QEE0.&quot;"><id>tag:blogger.com,1999:blog-2349434231090974738.post-1597763596240182753</id><published>2010-12-22T06:44:00.002Z</published><updated>2010-12-22T06:44:00.598Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-22T06:44:00.598Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Challenging Problems" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview Questions" /><title>String Shift and Print</title><content type="html">After my last blog post, someone pointed out a similar problem &lt;a href="http://lists.boost.org/Archives/boost/2001/04/11024.php"&gt;here&lt;/a&gt;. The problem goes:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;Write a program that generates from the string "abcdefghijklmnopqrstuvwxyz{" the following: &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;a &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;bcb &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;cdedc &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;defgfed &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;efghihgfe &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;fghijkjihgf &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;ghijklmlkjihg &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;hijklmnonmlkjih &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;ijklmnopqponmlkji &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;jklmnopqrsrqponmlkj &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;klmnopqrstutsrqponmlk &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;lmnopqrstuvwvutsrqponml &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;mnopqrstuvwxyxwvutsrqponm &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#990000;"&gt;nopqrstuvwxyz{zyxwvutsrqpon &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well there is no time limit this time and we dont even need to use google. I think this is slightly trickier than the last one. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is my solution:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background:#DDDDDD"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="comment"&gt;//Program tested on Microsoft Visual Studio 2008 - Zahid Ghadialy&lt;br /&gt;&lt;/span&gt;&lt;span class="pre"&gt;&lt;br /&gt;#include&amp;lt;iostream&amp;gt;&lt;br /&gt;#include&amp;lt;string&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="keyword"&gt;&lt;br /&gt;using namespace&lt;/span&gt; std&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;&lt;br /&gt;int&lt;/span&gt;&lt;span class="keyword"&gt; main&lt;/span&gt;&lt;span class="operator"&gt;()&lt;br /&gt;{&lt;/span&gt;&lt;br /&gt;  string str&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="string"&gt; "abcdefghijklmnopqrstuvwxyz{"&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  unsigned&lt;/span&gt; strlen&lt;span class="operator"&gt; =&lt;/span&gt; str&lt;span class="operator"&gt;.&lt;/span&gt;length&lt;span class="operator"&gt;();&lt;/span&gt;&lt;br /&gt;  string tempStr&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;  int&lt;/span&gt; loop&lt;span class="operator"&gt; =&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  while&lt;/span&gt;&lt;span class="operator"&gt;(&lt;/span&gt;tempStr&lt;span class="operator"&gt;.&lt;/span&gt;length&lt;span class="operator"&gt;() &amp;lt;&lt;/span&gt; strlen&lt;span class="operator"&gt;)&lt;br /&gt;  {&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;    int&lt;/span&gt; start1&lt;span class="operator"&gt; =&lt;/span&gt; loop&lt;span class="operator"&gt;;&lt;/span&gt;&lt;span class="type"&gt;&lt;br /&gt;    int&lt;/span&gt; count1&lt;span class="operator"&gt; =&lt;/span&gt; loop&lt;span class="operator"&gt; +&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    tempStr&lt;span class="operator"&gt; =&lt;/span&gt; str&lt;span class="operator"&gt;.&lt;/span&gt;substr&lt;span class="operator"&gt;(&lt;/span&gt;start1&lt;span class="operator"&gt;,&lt;/span&gt;count1&lt;span class="operator"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    count1&lt;span class="operator"&gt;--;&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;    for&lt;/span&gt;&lt;span class="operator"&gt;(;&lt;/span&gt; count1&lt;span class="operator"&gt; &amp;gt;&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;/span&gt; count1&lt;span class="operator"&gt;--)&lt;/span&gt;&lt;br /&gt;      tempStr&lt;span class="operator"&gt;.&lt;/span&gt;append&lt;span class="operator"&gt;(&lt;/span&gt;str&lt;span class="operator"&gt;.&lt;/span&gt;substr&lt;span class="operator"&gt;(&lt;/span&gt;start1&lt;span class="operator"&gt;+&lt;/span&gt;count1&lt;span class="operator"&gt;-&lt;/span&gt;&lt;span class="int"&gt;1&lt;/span&gt;&lt;span class="operator"&gt;,&lt;/span&gt;&lt;span class="int"&gt; 1&lt;/span&gt;&lt;span class="operator"&gt;));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;tempStr&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    cout&lt;span class="operator"&gt;&amp;lt;&amp;lt;&lt;/span&gt;endl&lt;span class="operator"&gt;;&lt;/span&gt;&lt;br /&gt;    loop&lt;span class="operator"&gt;++;&lt;br /&gt;  }&lt;/span&gt;&lt;span class="flow"&gt;&lt;br /&gt;  return&lt;/span&gt;&lt;span class="int"&gt; 0&lt;/span&gt;&lt;span class="operator"&gt;;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2349434231090974738-1597763596240182753?l=advancedcppwithexamples.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PmRzntEuUsHScLvoi7jmhvBk104/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PmRzntEuUsHScLvoi7jmhvBk104/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PmRzntEuUsHScLvoi7jmhvBk104/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PmRzntEuUsHScLvoi7jmhvBk104/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AdvancedCWithExamples/~4/ws--GvLUXyM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://advancedcppwithexamples.blogspot.com/feeds/1597763596240182753/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://advancedcppwithexamples.blogspot.com/2010/12/string-shift-and-print.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1597763596240182753?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2349434231090974738/posts/default/1597763596240182753?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdvancedCWithExamples/~3/ws--GvLUXyM/string-shift-and-print.html" title="String Shift and Print" /><author><name>Zahid Ghadialy</name><uri>http://www.blogger.com/profile/11618208626682295272</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_mAJDMuyu_WI/S9vjpcotCpI/AAAAAAAACV8/i6-soseljdE/S220/Zahid_Big_Apr10.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://advancedcppwithexamples.blogspot.com/2010/12/string-shift-and-print.html</feedburner:origLink></entry></feed>

