遍历容器元素?

C加伽 2014-04-24 10:37:15

//a.cc
vector<string> v(3,"abc");
for(vector<string>::size_type i=0; i!=v.size(); i++)
cout<<v[i];



//b.cc
vector<string> v(3,"abc");
char const *p=v[0].c_str();
while(*p)
{
cout<<*p;
p++;
}


问题:
1.程序:a.cc,打印:abcabcabc
是对!
2.程序:b.cc,打印:abc
是错!
它是遇到了字符串字面值的结束符:'\0'。而停止了打印。对么?
...全文
172 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyue03 2014-04-27
  • 打赏
  • 举报
回复
一个是容器的元素, 一个是容器元素的元素
C加伽 2014-04-26
  • 打赏
  • 举报
回复
2楼: 对!
C加伽 2014-04-26
  • 打赏
  • 举报
回复

vector<string> v(3,"abc");
for(vector<string>::size_type i=0; i<v.size(); i++)
 {
   for(char const  *p=v[i].c_str(), *q=p+v[i].size(); p<q; p++)
    cout<<*p; 
 }
C加伽 2014-04-26
  • 打赏
  • 举报
回复
2楼: 方法是对。不过,size_t,应改为:string::size_type。对么?
lionghua 2014-04-25
  • 打赏
  • 举报
回复
引用 楼主 u014377200 的回复:

//a.cc
vector<string> v(3,"abc");
for(vector<string>::size_type i=0;  i!=v.size(); i++)
  cout<<v[i]; 

//b.cc
vector<string> v(3,"abc");
char const *p=v[0].c_str();
while(*p)
  {
    cout<<*p;
    p++;
  } 
问题: 1.程序:a.cc,打印:abcabcabc 是对! 2.程序:b.cc,打印:abc 是错! 它是遇到了字符串字面值的结束符:'\0'。而停止了打印。对么?
第一种情况是,v是一个容器,容器中有3个string对象,这三个对象是一样的,所以你输出三次一样的,不见怪; 第二种是你分别输出了容器中第一个string对象的值。
C加伽 2014-04-25
  • 打赏
  • 举报
回复
MBSHENG: 给个程序?
MBSHENG 2014-04-24
  • 打赏
  • 举报
回复
楼主应该是想像二维数组那样通过传递首地址打印所有值吧
mujiok2003 2014-04-24
  • 打赏
  • 举报
回复
引用
2.程序:b.cc,打印:abc 是错!
char const *p=v[0].c_str() 你理解错了, 因为你只打印了一个元素。
漂浮一生 2014-04-24
  • 打赏
  • 举报
回复
容器中有一个叫迭代器的就是指针,
# include <iostream>
# include <string>
# include <vector>
using namespace std;

int main()
{
	vector<string> svec(3,"abc");

	for (vector<string>::iterator iter = svec.begin(); iter != svec.end(); ++iter)
	{
		cout << *iter << endl;
	}
	return 0;
}
ningto.com 2014-04-24
  • 打赏
  • 举报
回复

	vector<string> v(3, "abc");
	for (size_t i=0; i<v.size(); i++) {
		char const *p = v[i].c_str();
		while (*p) {
			cout << *p;
			p++;
		}
	}
C加伽 2014-04-24
  • 打赏
  • 举报
回复
3.怎样,用指针方法,打印容器所有元素?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧