由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++ 里push_back 一问
相关主题
问一个关于C++指针的问题包含指针的类和vector的问题
C++11里list迭代器判空仍然知道具体的list对象吗?C++: What is the difference between the two approaches?
请问C++如何初始化类时就传入一个数组参数copy constructor问题。
Reversing a singly linked listC++编程原则的问题
C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!vector< vector > > 怎么初始化?
请教 C++ 题刚看完类这一章,有些大小问题,请指教,谢谢
C++一问c++ 一问
int &x=y;的问题C++的"初始化"小结
相关话题的讨论汇总
话题: node话题: li话题: list话题: c++话题: back
进入Programming版参与讨论
1 (共1页)
m******d
发帖数: 75
1
下面的程序:
Node* head;
vector< list > ret;
list li;
ret.push_back(li);
li.push_back(head);
发现head并没有被push进ret里的li, 必须先改变li再push_back(li)?
另外,为什么不能list li = NULL; 初始化为 NULL?
Thanks
g*********e
发帖数: 14401
2
当你push_back(a)的时候,就是给a做了一份copy,然后把copy push进去了。
你先li.pushback(head);
再ret.pushback(li);
这样就行了。
另外list li = list(); // object 无法赋值为空"指针"
我看还是乖乖用java吧
p***o
发帖数: 1252
3
你倒数第二句跟不写没区别 ...
不过上来就学Java/Python没用过C/C++的理解值语义确实要花时间。

【在 g*********e 的大作中提到】
: 当你push_back(a)的时候,就是给a做了一份copy,然后把copy push进去了。
: 你先li.pushback(head);
: 再ret.pushback(li);
: 这样就行了。
: 另外list li = list(); // object 无法赋值为空"指针"
: 我看还是乖乖用java吧

N******K
发帖数: 10202
4
lol

【在 m******d 的大作中提到】
: 下面的程序:
: Node* head;
: vector< list > ret;
: list li;
: ret.push_back(li);
: li.push_back(head);
: 发现head并没有被push进ret里的li, 必须先改变li再push_back(li)?
: 另外,为什么不能list li = NULL; 初始化为 NULL?
: Thanks

m******d
发帖数: 75
5
Thanks.
没学过java,学了c,又学c++, 惭愧...

【在 g*********e 的大作中提到】
: 当你push_back(a)的时候,就是给a做了一份copy,然后把copy push进去了。
: 你先li.pushback(head);
: 再ret.pushback(li);
: 这样就行了。
: 另外list li = list(); // object 无法赋值为空"指针"
: 我看还是乖乖用java吧

d****n
发帖数: 12461
6
“另外list li = list(); // object 无法赋值为空"指针"”
这是啥意思?

【在 g*********e 的大作中提到】
: 当你push_back(a)的时候,就是给a做了一份copy,然后把copy push进去了。
: 你先li.pushback(head);
: 再ret.pushback(li);
: 这样就行了。
: 另外list li = list(); // object 无法赋值为空"指针"
: 我看还是乖乖用java吧

t*****n
发帖数: 4908
7
stackoverflow里面有一堆的回答。建议google先。

【在 m******d 的大作中提到】
: 下面的程序:
: Node* head;
: vector< list > ret;
: list li;
: ret.push_back(li);
: li.push_back(head);
: 发现head并没有被push进ret里的li, 必须先改变li再push_back(li)?
: 另外,为什么不能list li = NULL; 初始化为 NULL?
: Thanks

t**r
发帖数: 3428
8
object of a class cannot be NULL.
you can set any pointer to NULL.
clear?

【在 d****n 的大作中提到】
: “另外list li = list(); // object 无法赋值为空"指针"”
: 这是啥意思?

z*******6
发帖数: 133
9
li 本身并不是指针,是包含指针的list
d****n
发帖数: 12461
10
还是不懂。list li有啥问题?

【在 t**r 的大作中提到】
: object of a class cannot be NULL.
: you can set any pointer to NULL.
: clear?

相关主题
请教 C++ 题包含指针的类和vector的问题
C++一问C++: What is the difference between the two approaches?
int &x=y;的问题copy constructor问题。
进入Programming版参与讨论
m******d
发帖数: 75
11
对,当时就是这个地方犯晕了

【在 z*******6 的大作中提到】
: li 本身并不是指针,是包含指针的list
g*********e
发帖数: 14401
12
没问题 这里call了他的默认构造函数

【在 d****n 的大作中提到】
: 还是不懂。list li有啥问题?
t*******d
发帖数: 30
13
welcome to C++ realm, Java guy:D
z*******6
发帖数: 133
14
// Node* head;
// vector< list > ret;
// list li;
// ret.push_back(li);
// ^^^^^^^^^^^^^^^^^
// li.push_back(head);
//ret.push_back(li);
现在ret.head() 可以认为是 li_copy, li_copy = li( 调用list 的operator =).
FYI, 如果函数参数是个list/vector etc, 每次调用都要copy, 所以 ... :)
s******u
发帖数: 501
15
语法问题别人都帮你解释了
但是更要紧的是你的设计问题,也就是说,你这段代码想干嘛?
做链表的话直接list就可以了,没有特别的需求不要用指针了
或者你直接用struct Node{ } 来做,不要牵扯到list
看起来像是你想用C++的工具来写C的程序,但是记得C++和C是完全不同的两个语言

【在 m******d 的大作中提到】
: 下面的程序:
: Node* head;
: vector< list > ret;
: list li;
: ret.push_back(li);
: li.push_back(head);
: 发现head并没有被push进ret里的li, 必须先改变li再push_back(li)?
: 另外,为什么不能list li = NULL; 初始化为 NULL?
: Thanks

g*********e
发帖数: 14401
16

有时候node本身很大,你都存到一个list里面开销太大。只存指针也可行。或者存一个
wrapper object.

【在 s******u 的大作中提到】
: 语法问题别人都帮你解释了
: 但是更要紧的是你的设计问题,也就是说,你这段代码想干嘛?
: 做链表的话直接list就可以了,没有特别的需求不要用指针了
: 或者你直接用struct Node{ } 来做,不要牵扯到list
: 看起来像是你想用C++的工具来写C的程序,但是记得C++和C是完全不同的两个语言

s******u
发帖数: 501
17
node放在别的地方也是占用内存,为什么不直接放在list里面呢。而且list的增删操作
都不会挪动已有的数据,基本上是没有额外开销的,我觉得直接用list应该问题不大
回头又看了一下你的程序,里面还有个vector>,是不是想用固定的几个node重
新排列组合成不同的链表放到vector里面么?那样子到确实只能用指针。。。不过也建
议用smart pointer。C++里面的裸体指针不是很好的practice

【在 g*********e 的大作中提到】
:
: 有时候node本身很大,你都存到一个list里面开销太大。只存指针也可行。或者存一个
: wrapper object.

g*********e
发帖数: 14401
18

比如你有个graph of nodes,你想搞bfs,那就得在一个list里存node的指针。

【在 s******u 的大作中提到】
: node放在别的地方也是占用内存,为什么不直接放在list里面呢。而且list的增删操作
: 都不会挪动已有的数据,基本上是没有额外开销的,我觉得直接用list应该问题不大
: 回头又看了一下你的程序,里面还有个vector>,是不是想用固定的几个node重
: 新排列组合成不同的链表放到vector里面么?那样子到确实只能用指针。。。不过也建
: 议用smart pointer。C++里面的裸体指针不是很好的practice

s******u
发帖数: 501
19
同意,这个没有问题,要么用指针要么用引用要么用index
我的意思是用STL container来维护node的life-cycle,而不是交给developer用bare
pointer来手动的new/delete

【在 g*********e 的大作中提到】
:
: 比如你有个graph of nodes,你想搞bfs,那就得在一个list里存node的指针。

N******K
发帖数: 10202
20
做mesh之类的 参考 openmesh
我最新写了一个mesh类 用c++

【在 g*********e 的大作中提到】
:
: 比如你有个graph of nodes,你想搞bfs,那就得在一个list里存node的指针。

1 (共1页)
进入Programming版参与讨论
相关主题
C++的"初始化"小结C++(非VC++) 删除链表时如何对指针操作? 在线等回复!谢谢!
C++ auto type是怎么推算的?请教 C++ 题
C++debug遇到的问题C++一问
问两个C++面世小问题int &x=y;的问题
问一个关于C++指针的问题包含指针的类和vector的问题
C++11里list迭代器判空仍然知道具体的list对象吗?C++: What is the difference between the two approaches?
请问C++如何初始化类时就传入一个数组参数copy constructor问题。
Reversing a singly linked listC++编程原则的问题
相关话题的讨论汇总
话题: node话题: li话题: list话题: c++话题: back