Solved

vector problem?

Posted on 2008-06-12
14
262 Views
Last Modified: 2010-04-01
I have a segment of code which is failing. It's is something implement many other times, but somehow in this instance is not working. the code segment is:

vector<SystemNode*>::iterator node_itr = gvp_SystemNodes.begin();
while(node_itr != gvp_SystemNodes.end());
{
  ~~~~~~~
}

when it gets to the while statment, it is stuck in a loop. The code does not crash, it just forever loops inside the std vector code. I have not figured out whats its doing. Since that was really weird I also tried this:

vector<SystemNode*>::iterator node_itr = gvp_SystemNodes.begin();
while(node_itr != gvp_SystemNodes.begin());
{
  ~~~~~~~
}

And the code went right into the while loop. When in debug mode and watching the vector, it seems to evaluate correctly.  What could be going on here?

Thanks,

0
Comment
Question by:mattososky
  • 6
  • 4
  • 4
14 Comments
 
LVL 53

Expert Comment

by:Infinity08
ID: 21774020
Are you actually incrementing the iterator ?

vector<SystemNode*>::iterator node_itr = gvp_SystemNodes.begin();
while(node_itr != gvp_SystemNodes.end());
{
  ~~~~~~~
  ++node_itr;
}
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 21774029
Also, I assume that gvp_SystemNodes is defined as vector<SystemNode*> ?
0
 

Author Comment

by:mattososky
ID: 21774072
yes, <SystemNode*>...

Its not looping inside the while statement. It's looping inside 'gvp_SystemNodes.end()'. Never gets insode the while statement.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 53

Expert Comment

by:Infinity08
ID: 21774089
>> It's looping inside 'gvp_SystemNodes.end()'.

What do you mean by that ? What's inside the loop block ? Can you show the exact code you are using ? If that's not possible, can you create a small demonstration code that shows the problem ?

What compiler are you using ?
0
 
LVL 40

Expert Comment

by:evilrix
ID: 21774130
>> It's looping inside 'gvp_SystemNodes.end()
Wow, that's a neat trick :)

There isn't really too much that can go wrong inside end() on VS2005 -- I agree with I8, we need code :)
0
 

Author Comment

by:mattososky
ID: 21774131
Ha! exactly my problem. I step through the code and it's inside the vector source code file, travles through about three functions until it returns the pointer. But then it executes the while statement again.

Have I hit a bug in the vector? Or something wrong with my compiler (VS2008)?

Again,, another very strange symptom,, listed in my intial post. If I set the while statment to !=~.begin(), it does enter the while statement when it clearly should not.

?
0
 
LVL 40

Accepted Solution

by:
evilrix earned 500 total points
ID: 21774148
You have semi-colons are the end of your while statement!

while(pred); <---- LOOK
{
}
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 21774150
>> Have I hit a bug in the vector?

For something as basic as this, it sounds quite unlikely.

Can you try creating a new project, and putting the code in there - just to make sure it's not related to project corruption of some kind.

Do you have the same problem for any code that loops through a vector ?

Can you show some complete sample code that has the problem ?


Are you sure that the compiler has been installed correctly ?
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 21774157
>> You have semi-colons are the end of your while statement!

Oh my ... Completely missed that lol
0
 

Author Comment

by:mattososky
ID: 21774160
There is another instance in the program where i declare a itr with a different name, but it works fine.
vector<SystemNode*>::iterator itr = gvp_SystemNodes.begin();
      while(itr!=gvp_SystemNodes.end())
      {


I would probably have to post alot of code for you to get the context....
0
 
LVL 40

Expert Comment

by:evilrix
ID: 21774171
>> You have semi-colons are the end of your while statement!
Does your code behave as per my example below? If so I'd suggest that's your problem.
#include <vector>
 
typedef std::vector<int> intvec_t;
 
int main()
{
	intvec_t intvec(10);
	intvec_t::const_iterator i = intvec.begin();
 
	while(i != intvec.end());
	{
	}
}

Open in new window

0
 

Author Comment

by:mattososky
ID: 21774174
I'm a bad boy....
0
 
LVL 40

Expert Comment

by:evilrix
ID: 21774182
>> I'm a bad boy....
Muhahahaha :)
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 21774188
>> I'm a bad boy....

Yes you are ;) Confusing me like that lol. Glad evilrix was around to spot it, or I would have gone off on a wild goose chase heh.
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question