By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
448,960 Members | 1,312 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 448,960 IT Pros & Developers. It's quick & easy.

how to initialize an stl iterator in vc2005

P: n/a
std::vector<CStringvec;
vec::iterator iter;

i can initiaze the iterator in vc6 like this : iter = NULL, but it
compile failed in vc2005, it tells me there is no acceptable
conversion.
Jul 1 '08 #1
Share this Question
Share on Google+
4 Replies


P: n/a
On 7/1/2008 2:41 PM, thinktwice wrote:
std::vector<CStringvec;
vec::iterator iter;

i can initiaze the iterator in vc6 like this iter = NULL, but it
compile failed in vc2005, it tells me there is no acceptable
conversion.
How true...
Repeat after me: "An iterator is not a pointer".

Try this:
std::vector<CStringvec;
std::vector<CString>::iterator iter = vec.end();

What problem do you try to solve?
Regards,
Stefan
--
Stefan Naewe stefan dot naewe at atlas-elektronik dot com
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
Jul 1 '08 #2

P: n/a
thanks for your reply, i want to use a class data member whhose type
is a iteraotr, i might use in several class methods, but before use it
i want to know whether this iterator is null or invalid

On 71, 900, Stefan Naewe <nos...@please..netwrote:
On 7/1/2008 2:41 PM, thinktwice wrote:
std::vector<CStringvec;
vec::iterator iter;
i can initiaze the iterator in vc6 like this iter = NULL, but it
compile failed in vc2005, it tells me there is no acceptable
conversion.

How true...
Repeat after me: "An iterator is not a pointer".

Try this:

std::vector<CStringvec;
std::vector<CString>::iterator iter = vec.end();

What problem do you try to solve?

Regards,
Stefan
--
Stefan Naewe stefan dot naewe at atlas-elektronik dot com
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
Jul 2 '08 #3

P: n/a
thinktwice wrote:
thanks for your reply, i want to use a class data member whhose type
is a iteraotr, i might use in several class methods, but before use it
i want to know whether this iterator is null or invalid
(a) Please don't top-post.

(b) Generally, it is impossible to determine through inspection whether an
iterator is invalid. The point is that operations on the underlying
container can invalidate iterators. The iterator is not required to detect
that.

(c) With a lot of care, you could use the container.end() value to indicate
an invalid iterator. However, this is fragile because of the problems
mentioned in (b).

(d) It might be better to consider a redesign that avoids the need for
checking the validity of the iterator. What is the underlying problem you
are trying to solve?
Best

Kai-Uwe Bux
On 7?1?, ??9?00?, Stefan Naewe <nos...@please.netwrote:
>On 7/1/2008 2:41 PM, thinktwice wrote:
std::vector<CStringvec;
vec::iterator iter;
i can initiaze the iterator in vc6 like this ? iter = NULL, but it
compile failed in vc2005, it tells me there is no acceptable
conversion.

How true...
Repeat after me: "An iterator is not a pointer".

Try this:

std::vector<CStringvec;
std::vector<CString>::iterator iter = vec.end();

What problem do you try to solve?

Regards,
Stefan
--
Stefan Naewe stefan dot naewe at atlas-elektronik dot com
Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please http://www.expita.com/nomime.html
PS: also please don't quote signatures.

Jul 2 '08 #4

P: n/a
On Jul 1, 2:41 pm, thinktwice <memorial...@gmail.comwrote:
std::vector<CStringvec;
vec::iterator iter;
i can initiaze the iterator in vc6 like this ? iter = NULL, but it
compile failed in vc2005, it tells me there is no acceptable
conversion.
It's undefined behavior. VC 6.0 failed to tell you about the
error; later versions do.

--
James Kanze (GABI Software) email:ja*********@gmail.com
Conseils en informatique oriente objet/
Beratung in objektorientierter Datenverarbeitung
9 place Smard, 78210 St.-Cyr-l'cole, France, +33 (0)1 30 23 00 34
Jul 2 '08 #5

This discussion thread is closed

Replies have been disabled for this discussion.