c++程序设计 读书笔记(一)

2016.12.3 - 2016.12.4

概览部分

完成一个程序的设计工作分三步

  • 分析 取得对问题的一个清晰2的理解
  • 设计 标识出在一个解决方案中所涉及的关键概念
  • 编程 用一个程序表达这个解决方案

写出一个好程序,最关键的就是去设计这些类

如何用c++写出优秀的程序

  • 了解写程序的目的
  • 实践,模仿优秀的作品

第三章

一些关于string操作 p68

    string s;

    //裁剪字符串
    s.substr(a,b); // a:字符串里一个下标的位置; b:所需字符串长度

    //替换字符串
    s.replace(a,b,"string");// a:字符串里一个下标的位置; b:所需字符串长度; string: 替换成的内容

    //打印c风格的字符串
    printf("%s\n", s.c_str());

    //读取一行
    getline(cin,s);

    //添加结尾符
    s+="\n";

一些关于vector的事项 p71

    vector<TYPE> name(100); // 100个元素的向量
    vector<TYPE> name[100]; //100个空间量的向量

vector不支持超出范围的监测

    int i = vector<TYPE> name[101];//随机赋值给i

另: vector与list区别

vector 顺序表(数组)
能高效进行随机存取,时间复杂度为O(1)
插入与删除时内存块拷贝,时间复杂度为O(n)
vector::iterator支持“+”,“+=”,“<”等操作符
list 双向链表
于vector的优劣势相反
list::iterator则不支持“+”、“+=”、“<”等

迭代器类型

任何特定的的迭代器也都是某个类型的对象,但是可能差异巨大, 而且都是为某项特定工作专门量身打造的

  • victor的迭代器为常规指针
  • list的迭代器为指向链接的指针

ps: 经典迭代器代码

    #include<iostream>
    #include<vector>

    using namespace std;

    int main()
    {
        vector<int> ivec;
         ivec.push_back(1);
         ivec.push_back(2);
         ivec.push_back(3); 
         ivec.push_back(4);

         for(vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter){
            cout << *iter << endl;
         }
    }

关于标准库的忠告

  • 不要像重新发明车轮那样企图做每件事,去使用库
  • 不要相信奇迹,要理解你的库能做什么,它们,它们如何做,需要付出多大代价
  • 当你遇到一个选择时,优先选择标准库
  • 不要认为标准库对于任何事情都是最理想的
  • 切记#include你所用到的功能的头文件
  • 标准库的功能定义在名字空间std之中
  • 请用string, 而不是char*
  • 如果怀疑, 就用一个检查区间范围的向量(例如Vec)
  • vector[T],list[T]和map
一些有用的文章
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值