请教typedef问题

leboc 2008-11-22 04:07:42
7、以下代码有什么问题?
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}
/*////////////////////////////////////////////////////////////
为什么IntArray<类型> array;不行
而第一句改成typedef vector<类型> IntArray;就正确了.


*/////////////////////////////////////////////////////////////////
...全文
232 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyj626 2008-11-24
  • 打赏
  • 举报
回复
还有一个错误,array.erase之后, 需要--itor
guolihui112 2008-11-24
  • 打赏
  • 举报
回复
typedef 其后跟随的须为 具体类型,
像类模板这样的 (vector) 不是具体类型,故不可
而像模板类这样的 (vector <类型>) 是具体类型, 故可
lc19890326 2008-11-22
  • 打赏
  • 举报
回复
vector不是类型而是一个模板名称
vector<类型>才是一个类型
typedef是针对类型取别名的


typedef vector IntArray;
IntArray array;//相对与vector IntArray

再说,你这样的话请问array如何进行模板实例化呢 ?
rainbow_free 2008-11-22
  • 打赏
  • 举报
回复
up
P_ghost 2008-11-22
  • 打赏
  • 举报
回复
typedef不是#define
就呆在云上 2008-11-22
  • 打赏
  • 举报
回复
++itor
后补充一个分号
就呆在云上 2008-11-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 leboc 的帖子:]
7、以下代码有什么问题?
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( …
[/Quote]
两个错误,第一类型的错误,不能这么定义,typedef不是define不是文字的替换,还有一个错误,array.erase之后,itor会加一次,for的第三个部分也会自加一次,这样就肯定不是你要的结果了。
如下修改:
#include <vector>
using namespace std;
int main()
{
typedef vector<int> IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); )
{
if( 2 == *itor )
array.erase( itor );
else
++itor
}
}
toadzw 2008-11-22
  • 打赏
  • 举报
回复
不要乱定义好不好;
toadzw 2008-11-22
  • 打赏
  • 举报
回复
不要乱定义好不好;
帅得不敢出门 2008-11-22
  • 打赏
  • 举报
回复
没见过你这种用法的.
You can use typedef declarations to construct shorter or more meaningful names for types already defined by the language or for types that you have declared

65,211

社区成员

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

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