• 实验报告(五)


    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    
    // 函数声明 
    void output1(vector<string> &);  
    void output2(vector<string> &);  
    
    int main()
    {
    vector<string>likes, dislikes; // 创建vector<string>对象likes和dislikes
    string c;
    while(cin>>c,c!="0"){
    likes.push_back(c);
    }
    // 为vector<string>数组对象likes添加元素值 ( favorite book, music, film, paintings,anime,sport,sportsman,etc) 
    // 补足代码 
    // 。。。 
    
    cout << "-----I like these-----" << endl;
    output1(likes); 
    ![](https://images2018.cnblogs.com/blog/1349923/201805/1349923-20180523220143888-1265103778.png)
    
    // 调用子函数输出vector<string>数组对象likes的元素值 
    // 补足代码
    // 。。。 
    string c2;
    while(cin>>c2,c2!="0"){
    	
    dislikes.push_back(c2);
    }
    // 为vector<string>数组对象dislikes添加元素值 
    // 补足代码 
    // 。。。 
    	
    cout << "-----I dislike these-----" << endl;
        output2(dislikes);
     
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    // 。。。 
        swap(likes,dislikes);
    // 交换vector<string>对象likes和dislikes的元素值 
    // 补足代码
    // 。。。 
    	
    cout << "-----I likes these-----" << endl;
    output1(likes);
    
    // 调用子函数输出vector<string>数组对象likes的元素值 
    // 补足代码
    // 。。。 
    cout << "-----I dislikes these-----" << endl;
    output2(dislikes);
    
    // 调用子函数输出vector<string>数组对象dislikes的元素值 
    // 补足代码
    // 。。。 
    return 0;
    }
    
    
    // 函数实现 
    // 以下标方式输出vector<string>数组对象v的元素值  
    void output1(vector<string> &v) {
    for(int i=0;i<v.size();i++){
    cout<<v[i]<<endl;
    }
    // 补足程序
    // 。。。 
    }
    
    // 函数实现
    // 以迭代器方式输出vector<string>数组对象v的元素值 
    void output2(vector<string> &v) {
    for(int i=0;i<v.size();i++){
    cout<<v[i]<<endl;
    }
    // 补足程序
    // 。。。 
    }
    

    6-17

    #include <iostream> 
    using namespace std ;
    int main() { 
       int *p; 
       *p = 9; // 指针p初始化有问题,它这样是指向内存中的地址的,如果是系统重要的数据的位置,会导致系统崩溃。 
       cout << "The value at p: " << *p; 
       return 0; 
    }
    

    6-18

    #include<iostream>
    using namespace std;
    int fn1()
    {
        int *p=new int (5);
        return *p;
        delete p;//加了一个删除,避免内存泄漏 
    }
    int main()
    {
        int a=fn1();
        cout<<"The value of a is:"<<a;
        return 0;
     }
    

    凡是动态内存分配的,就要注意delete

    总结和体会

    还要多花点时间在C++上,不仅新学的完成度很低,期中考试的也还没有做出来,看书的时候有很多疑惑,看的也很慢,实际操作问题也是很多,一直在改。

    1.关于vector的
    声明形如vector<> vec;的不是new出来而是作为普通变量的那么不需要delete, 在变量超出作用域时会自动回收
    如果是用*vec = new vector<>()这种方式动态创建的vector那么需要delete vec
    vec里存放的元素如果不是指针那么不用delete, 这些元素在vec被释放时会被一起释放
    vec里存放的元素是指针并且这些指针都是指向自己new的对象的话, 那么需要自己一个个delete

    这是链接:
    https://zhidao.baidu.com/question/242767717391714204.html

    2.关于删除指针和删除数组
    网上看到一个删除指针是否删除数组,觉得讲的挺好,这是链接:
    https://zhidao.baidu.com/question/529047970.html

    3.老师给的代码里的函数
    (1)push_back是算法语言里面的一个函数名。如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。

    (2)isprime是一种函数,功能是判断素数。
    int isprime (int n)
    {
    int flag,i;
    flag=1;
    for(i=2;i<=sqrt(n);i++)
    {
    if(n%i==0)
    {
    flag=0;
    break;
    }
    }
    return flag;
    }
    这是百度的,也get到了老师的通过bool判断真假返回这一方法。

    4.补充代码时遇到的问题
    (1)将string写成了char之后产生了问题。
    (2)给数组定初值的时候不知道是否可以按照字符串变量赋初值来。
    (3)迭代器方式输出还不会。
    (4)使用swap的时候,一开始写的是void swap(likes&dislikes)但是是报错的,不知道为什么。

    未完成的,晚点会陆续补出来。

  • 相关阅读:
    X oracle move lob 字段到另外的表空间
    X CentOS7使用firewalld打开关闭防火墙与端口
    X ftpd服务常见配置总结(/etc/vsftpd/vsftpd.conf) 【附参数文件】
    P1853 投资的最大效益
    P1466 [USACO2.2]集合 Subset Sums
    小A点菜
    NASA的食物计划
    动态规划入门笔记
    数字三角形 Number Triangles
    P1825 [USACO11OPEN]Corn Maze S
  • 原文地址:https://www.cnblogs.com/zxy666/p/9079962.html
Copyright © 2020-2023  润新知