由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教一个MS Linked List的问题
相关主题
也问个template 的问题(C++)问个虚函数的作用
Listing files under a directory in C++C#程序调用Windows C++ DLL的问题
C++ Q20: construction and inheritancequestion on divide by zero
如何sort and merge n 个sorted linked list弱问mcc和mex的区别
A try-catch problem in C++heap 和 stack问题
copy constructor问题。C++ Q17: throw 2
python和java里面非memory资源怎么回收?private destructor
C++ vectorC++ Pitfalls , you may not know [转载]
相关话题的讨论汇总
话题: list话题: abc话题: ms话题: aa话题: iterator
进入Programming版参与讨论
1 (共1页)
S*********t
发帖数: 522
1
MS自己做了一个List class,详情在这里:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrfList_header_file.asp
我现在的一个问题是,分不清list.front()与list.begin()这两个Function的区别。请大
家帮我看看。两个函数的说明在上面提供的网址上List的分目录Classes里。
另一个问题是:
假设ABC是一个Struct数据类型,我定义一个List,把ABC串起来,
ABC aa;
List dd; 假设dd里已经有数据了
aa = dd.front(); 这个是什么?因为我看MS的说明front好象返回的是指针啊。
接着下面我再定义一个iterator
list::iterator ii = dd.begin();
aa = *ii; 请问这个aa的值与上面的aa的值是一样的吗?
谢谢!!!
m******n
发帖数: 21
2
list是C++ Standard library的,不独是MS的。
dd.front() 返回dd第一个element的reference,不是pointer.
list::iterator ii = dd.begin();
(*ii)和dd.front()都是dd第一个element的reference,所以他们的值是一样的。



【在 S*********t 的大作中提到】
: MS自己做了一个List class,详情在这里:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrfList_header_file.asp
: 我现在的一个问题是,分不清list.front()与list.begin()这两个Function的区别。请大
: 家帮我看看。两个函数的说明在上面提供的网址上List的分目录Classes里。
: 另一个问题是:
: 假设ABC是一个Struct数据类型,我定义一个List,把ABC串起来,
: ABC aa;
: List dd; 假设dd里已经有数据了
: aa = dd.front(); 这个是什么?因为我看MS的说明front好象返回的是指针啊。
: 接着下面我再定义一个iterator
: list::iterator ii = dd.begin();

Q**g
发帖数: 183
3
不对。
1. iterator 是一个object,不是一个指针。Iterator类重载了* operator,所以你能用
*ii 来dereference.
2. reference 就是reference,可以理解成"alias"。跟指针或者地址是有区别的。
aa = dd.front();
dd.front() 返回一个放在LIST里的第一个object的reference,然后发生的assignment
(=),是把那个object的内容拷贝了一份给aa(当然你可以overload = 做其它的事情)。
aa并不是一个reference。assignment之后它有了一个独立的copy。尤其不能理解成aa
就是指向哪个object的地址。
3. copy constructor 和 assignment. 如果你定义变量的同时初始化,是copy
construct.
定义后赋值,则是assignment
ABC aa = dd.front(); // copy constructor is invoked.
ABC aa; //default

【在 S*********t 的大作中提到】
: MS自己做了一个List class,详情在这里:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrfList_header_file.asp
: 我现在的一个问题是,分不清list.front()与list.begin()这两个Function的区别。请大
: 家帮我看看。两个函数的说明在上面提供的网址上List的分目录Classes里。
: 另一个问题是:
: 假设ABC是一个Struct数据类型,我定义一个List,把ABC串起来,
: ABC aa;
: List dd; 假设dd里已经有数据了
: aa = dd.front(); 这个是什么?因为我看MS的说明front好象返回的是指针啊。
: 接着下面我再定义一个iterator
: list::iterator ii = dd.begin();

1 (共1页)
进入Programming版参与讨论
相关主题
C++ Pitfalls , you may not know [转载]A try-catch problem in C++
想写个简单的 JVM- 用C++还是Javacopy constructor问题。
C++ JNI code to invoke native methodpython和java里面非memory资源怎么回收?
linked list vs Binary treeC++ vector
也问个template 的问题(C++)问个虚函数的作用
Listing files under a directory in C++C#程序调用Windows C++ DLL的问题
C++ Q20: construction and inheritancequestion on divide by zero
如何sort and merge n 个sorted linked list弱问mcc和mex的区别
相关话题的讨论汇总
话题: list话题: abc话题: ms话题: aa话题: iterator