顺序容器的问题,assign,swap

qdlgdx_lsy 2013-08-05 09:20:28
下面的代码编译通不过,求指导

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
int main() {
char *words[] = {"hello", "world", "hi"};
size_t word_size = sizeof(words) / sizeof(char *);
list<char *> lst(words, words+word_size);
vector<string> vect;
vect.assign(lst.begin(), lst.end());
return 0;
}

还有个人对swap()的理解,就是简单的把两个容器的名称对换了,不知道对不对?
...全文
180 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qdlgdx_lsy 2013-08-07
  • 打赏
  • 举报
回复
谢谢8楼的回复,看来vc6比较弱。 还有第二个问题:C++ primer 书上说,“由于容器内没有移动任何元素,因此迭代器不会失效”。对这句话,不是很理解。要是这样的话,那swap是怎样实现的?难道进行swap操作,不会移动容器内的元素?
rocktyt 2013-08-07
  • 打赏
  • 举报
回复
引用 8 楼 qdlgdx_lsy 的回复:
[quote=引用 6 楼 rocktyt2 的回复:] [quote=引用 4 楼 qdlgdx_lsy 的回复:] 我用的vc6编译器。按照2楼的改了,编译也通不过。求指导。
VC6不支持其他类型的迭代器,只支持容器自己的迭代器 因为VC6不支持类的成员模板函数 换编译器吧[/quote] vect.assign(lst.begin(), lst.end());这句话编译通不过。“其他类型的迭代器”是什么意思?唉,感觉自己弱爆了。[/quote]lst.begin()的类型是list<char const*>::iterator, vect自己的迭代器是vector<string>::iterator,两个类型不一样,VC6的话容器的区间构造用的迭代器必须是容器自己的迭代器类型
qdlgdx_lsy 2013-08-07
  • 打赏
  • 举报
回复
自己顶一个!!!!!
qdlgdx_lsy 2013-08-06
  • 打赏
  • 举报
回复
引用 6 楼 rocktyt2 的回复:
[quote=引用 4 楼 qdlgdx_lsy 的回复:] 我用的vc6编译器。按照2楼的改了,编译也通不过。求指导。
VC6不支持其他类型的迭代器,只支持容器自己的迭代器 因为VC6不支持类的成员模板函数 换编译器吧[/quote] vect.assign(lst.begin(), lst.end());这句话编译通不过。“其他类型的迭代器”是什么意思?唉,感觉自己弱爆了。
jiandingzhe 2013-08-06
  • 打赏
  • 举报
回复
引用 4 楼 qdlgdx_lsy 的回复:
我用的vc6编译器。按照2楼的改了,编译也通不过。求指导。
让你用VC6!!!
rocktyt 2013-08-06
  • 打赏
  • 举报
回复
引用 4 楼 qdlgdx_lsy 的回复:
我用的vc6编译器。按照2楼的改了,编译也通不过。求指导。
VC6不支持其他类型的迭代器,只支持容器自己的迭代器 因为VC6不支持类的成员模板函数 换编译器吧
qdlgdx_lsy 2013-08-06
  • 打赏
  • 举报
回复
自己顶一下!!!!!
qdlgdx_lsy 2013-08-05
  • 打赏
  • 举报
回复
我用的vc6编译器。按照2楼的改了,编译也通不过。求指导。
mujiok2003 2013-08-05
  • 打赏
  • 举报
回复
引用 楼主 qdlgdx_lsy 的回复:
还有个人对swap()的理解,就是简单的把两个容器的名称对换了,不知道对不对?
不对。 swap()调用发生在运行时, 而名称在编译后就不复存在。 swap需要交换两个容器的内部状态。
mujiok2003 2013-08-05
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
int main() {
	char const *words[] = {"hello", "world", "hi"};
	size_t word_size = sizeof(words) / sizeof(char *);
	list<char const*> lst(words, words+word_size);
	vector<string> vect;
	vect.assign(lst.begin(), lst.end());
	return 0;
}
漫步者、 2013-08-05
  • 打赏
  • 举报
回复
没有编译不通过,你用得什么编译器

64,643

社区成员

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

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