0

Hi there!
I'm having a little (really not so little) issue using iterators.

// object t1 created here.
std::vector<std::string> *f1_t1 = t1.func1();
std::vector<std::string>::iterator iterv;

for (iterv = f1_t1->begin(); iterv != f1_t1->end(); ++iterv)
    std::cout << *iterv << " ";
std::cout << std::endl;

std::vector<std::string> *f2_t1 = t1.func2();

for (iterv = f2_t1->begin(); iterv != f2_t1->end(); ++iterv)
    std::cout << *iterv << " ";
std::cout << std::endl;

// object t2 created here
std::vector<std::string> *f1_t2 = t2.f1();

for (iterv = f1_t2->begin(); iterv != f1_t2->end(); ++iterv)
    std::cout << *iterv << " ";
std::cout << std::endl;

std::vector<std::string> *f2_t2 = t2.f2();

for (iterv = f2_t2->begin(); iterv != f2_t2->end(); ++iterv)
    std::cout << *iterv << " ";
std::cout << std::endl;

As you can see, I have two member functions that return two different vectors of strings. The vectors are returned as references and assigned to a pointer of the same type (vector of strings). Then, using an iterator, the content of the vectors is printed out.
In the first object, everything goes fine, but when the runtime go ahead to print the content of the vectors of the second object, it append the output that should be given to the output of the previous object. I know, is not clear, maybe and example could clarify.

Object one output:
output11
output12
Object two output:
output11 output21
output12 output22

As you can see, the outputs of the second object have the ones from the first in front of them.

Could someone help me to solve this issue?

Note: this piece of code is used to print out the content of a binary tree, if this information can be useful.

2
Contributors
1
Reply
16
Views
3 Years
Discussion Span
Last Post by mike_2000_17
0

I don't see anything wrong with this code. My guess is that it is not a problem with either the printing or the iterators "resetting". It's most likely a problem with the creation of those vectors. In other words, what is being printed is exactly what is in those vectors. If you get the wrong things printed out, you probably put the wrong things into those vectors.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.