vector<string> *p1=new vector<string>(10); vector<string> *p2=new vector<string>[10]; 求大神解释!

请大神解释这两句分别的意思,好让我分清楚有什么不同。第一个表达式应该是分配十个string空间,p1指向10个空string,可以用*p1[0]访问第一个空指针吗?第二个... 请大神解释这两句分别的意思,好让我分清楚有什么不同。第一个表达式应该是分配十个string空间,p1指向10个空string,可以用*p1[0]访问第一个空指针吗?第二个就不是很懂了,谢谢大神! 展开
 我来答
百度网友9308069
2011-12-23 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:2053万
展开全部
vector<string> *p1=new vector<string>(10);
产生并赋予p1:1个vector对象和对应的空间,该vector有10个string空间;
vector<string> *p2=new vector<string>[10];
产生并赋予p2:10个vector对象和对应的空间,每个vector有默认个string空间;

======
另外,C++的STL容器,包括vector和string,本身的空间都是在堆中,本身就是一种类似指针。
不适合也没必要再在外面vector<string> *p1;再用一次指针,没有实际功用而且容易造成混淆。
C++的发明人推荐这些工具就是要避免用指针。C++整体上大多数情况也可以避免指针。
追问
我们老师也说过指针对c++不重要,但是你至少要看明白别人写的程序吧。
vector *p1 = new vector[10];就是一个两维数组,等价于string s1[10][...未初始]; 我也是这样理解的,请问这样理解对吗?可以用*p1[0]访问第一个空指针吗?
追答
只能说感觉上像string的二维数组,但不是。C语言中狭义的二维数组的空间是连续的,这vector装的string和vector本身空间不连续。所以更近似于“指针的数组 char *p[]”或“数组的数组”。
具体是同前贴,vector *p1 = new vector[10];是一维上10个vector对象空间, 每个vector可用来装不定数的string,或可看成vector的一维数组;

实际应用上除了一些基础算法很少运用到2维或多维数组。因为有太多的更优的数据结构可以用来解决具体问题。
不宜然EG
2011-12-23 · TA获得超过102个赞
知道答主
回答量:236
采纳率:0%
帮助的人:135万
展开全部
错也,第一个是动态分配一个vector<string>指针,并赋初值为10;
第二个才是动态分配10个vector<string>实例的数组,p2指向该数组的首地址
类似:
int *p = new int(10);
in *p = new int[10];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heresy_me
2011-12-23 · TA获得超过1719个赞
知道小有建树答主
回答量:1708
采纳率:42%
帮助的人:323万
展开全部
如果以一个数组来喻vector,那么,
vector<string> *p1 = new vector<string>(10); 就是一个一维数组,等价于string p1[10];只是vector<string>更灵活。

vector<string> *p1 = new vector<string>[10];就是一个两维数组,等价于string s1[10][...未初始];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2011-12-23 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:507万
展开全部
第一个是分配10个空间,第二个我是这样理解 的
vector<string> *p2=new vector<string>[10];
这儿是调用 的[]这个操作符,在这儿没有什么意义,如果你学过函数对象或者说是仿函数,你就应该知道我说的什么意思 ,不知道理解的对不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式