C++:检查程序错误并修正

问题1

检查下面的程序是否有错误并修正.


vector vec;
list lst;
int i;
while(cin >> i)
lst.push_back(i);
copy(lst.cbegin(),lst.cend(),vec.begin());

问题2

检查下面的程序是否有错误并修正.


vector vec;
vec.reserve(10);//让vector预分配10个内存空间
fill_n(vec.begin(),10,0);

C++.
image-2092

源代码1


/*************************************************************************
> File Name: test.10.7.1.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年06月08日
************************************************************************/

#include
#include
#include #include
using namespace std;

int main()
{
//vector vec;//此容器必须初始化,
//并且与拷贝容器的元素数量一样多
list lst;
int i;
cout << "input number?" << endl; while(cin >> i)
{
lst.push_back(i);
}
vector vec(lst.size(),0);//此处用拷贝容器元素数量
//初始化同样数量的元素[0]
/*
大部分接受三个参数的算法,都假定第三个参数
所属的容器与前两个参数所属的容器一样长!!
*/
copy(lst.begin(),lst.end(),vec.begin());//执行拷贝.
cout << "vector:size:" << vec.size() << " list:size: " << lst.size() << endl; return 0; }

源代码2

切忌不可以对空容器进行修改操作!!!并且算法不会检查写入操作是否合法!!


/*************************************************************************
> File Name: test.10.7.2.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年06月08日
************************************************************************/

#include
#include
#include
#include
using namespace std;

int main()
{
//vector vec;若未初始化容器,将无法实现修改元素1#
vector vec(10,10);
vec.reserve(10);//若1#没有初始化容器,此处也没有预先分配内存空间,程序运行结果将是未定义的.
fill_n(vec.begin(),10,0);//修改容器中的元素.
//输出容器中的元素.
for(vector::const_iterator it=vec.begin();it!=vec.end();++it)
{
cout << *it << endl; } return 0; }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据