探讨一个stl 题目:

ilovevc 2005-01-22 08:49:12
探讨一个题目:
一个 std::vector<int> vec; 需要插入几个int,例如3,1,4,1,5,9(也就是没有任何规律)
如果不将这些元素定义预先定义在一个int []数组中,哪样写最方便?
...全文
196 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
playmud 2005-01-23
  • 打赏
  • 举报
回复
vector吧,省事省心。
ilovevc 2005-01-23
  • 打赏
  • 举报
回复
我现在知道的最方便的做法是:
vector<int> v;
back_insert_iterator< vector<int> > it(v);
*v++ = 1;
*v++ = 2;
*v++ = 3;
*v++ = 4;

copy(v.begin(), v.end(), ostream_iterator<int>(cout));
显示 1 2 3 4
useresu 2005-01-23
  • 打赏
  • 举报
回复
不知道我说的使用文件算不算是解决不预先定义数组问题的一种方法,
我也想过这个问题的解决方法,
如果楼主想到了更好的方法,一定贴出来供大家学习啊。
useresu 2005-01-23
  • 打赏
  • 举报
回复
如果知道数组的大概范围,最好使用vector之前,最好声明其长度。
vector<int> vec(n);
当然你觉的不够,还可以重新增加,
但是这样总比开始就一个一个增加效率要高。

赋值的话,似乎没什么好的方法,这也算是STL的一个小问题吧。
因为开始如果声明vector长度为n的话,编译器会按照你的类型赋相应的零值。
如果如楼主所说没什么规律,
那么你只能通过数组吧,要不你就每个元素均写一次,那样似乎更麻烦,
其实这种情况用的不多吧,

小的数据量,如果仅是楼主给出的情形,用数组就足够了。不必使用vector.

大的数据量,一般要存成文件的,从文件读,就可以不用数组了。这也算是用文件初始化vector吧


idau7 2005-01-23
  • 打赏
  • 举报
回复
就是刚开始写法麻烦点儿哦.

std:vector<int> myarray;
myarray.push_back(你的数字);

就好了啊,比较方便啊.
idler 2005-01-23
  • 打赏
  • 举报
回复
还是push_back比较顺手。
idler 2005-01-22
  • 打赏
  • 举报
回复
vector以后加元素没问题啊。
ilovevc 2005-01-22
  • 打赏
  • 举报
回复
我有时候觉得定义一个数组来初始化一个vector比较繁琐,想简单些。这个vector当然以后还要加元素的,不能是c array。
whoho 2005-01-22
  • 打赏
  • 举报
回复
没什么好办法吧
pengzhenwanli 2005-01-22
  • 打赏
  • 举报
回复
其实际就一个问题。你的这个数组是不是大小确定的。
不确定vector
确定的用数组就好了
idau7 2005-01-22
  • 打赏
  • 举报
回复
vector当然可以了.你可以把它当成一个扩展了数组来用,还有附在在迭代器(iterator)上的算法,可以排序啊之类的.

楼上说的意思是说如果你涉及到元素类型不是内建的时候,用 int []比较适合.

其实,如果你要不断分配内存给int[]的话,就是说当你输入数据数目未知的时候, 同样考虑vector
我也看不穿 2005-01-22
  • 打赏
  • 举报
回复
说出你的目的
一般情况当然是用int []数组最方便
如果你实现不知道内容,内容是用表达式或函数获得的可以用STL算法

64,282

社区成员

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

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