C++菜鸟常见错误整理(第三天)

    本人目前还是学生,能力有限,有不足或者错误的地方欢迎大家指正,谢谢大家!

1、vector(容器)

     容器是一个类模板,需要在前面include<vector>  

      vector<string>  fvec(10); // 10 elements, each initialized to 0
      vector<string> svec(10); // 10 elements, each an empty string

     vector 操作
     v.empty() 如果 v 为空,则返回 true,否则返回 false。
     v.size() 返回 v 中元素的个数。
     v.push_back(t) 在 v 的末尾增加一个值为 t 的元素。
     v[n] 返回 v 中位置为 n 的元素。
     v1 = v2 把 v1 的元素替换为 v2 中元素的副本。
     v1 == v2 如果 v1 与 v2 相等,则返回 true。

举例     string word;

            vector<string> text;

            while (cin >> word)

           { text.push_back(word); }

      该循环从标准输入读取一系列 string 对象,逐一追加到 vector 对象的后面。

      每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。如果容器中有元素的话,由 begin 返回的迭代器指向第一个元素:

vector<int>::iterator iter = ivec.begin();假设 vector 不空,初始化后,iter 即指该元素为 ivec[0]。

for (vector<int>::iterator iter = ivec.begin();  iter != ivec.end(); ++iter)  *iter = 0;

for 循环首先定义了 iter,并将它初始化为指向 ivec 的第一个元素。for 循环的条件测试 iter 是否与 end 操作返回的迭代器不等。每次迭代 iter 都自增 1

2、指针
   string* ps1, ps2; ps1是指针对象,ps2是string

  C++ 提供了一种特殊的指针类型 void*,它可以保存任何类型对象的地址,void* 表明该指针与一地址值相关,但不清楚存储在此地址上的对象的类型。

  不同类型的指针不能相互赋值 double *pd = &dval; int *pi = pd;//错误,类型不同

3、const 指针

   把一个 const 对象的地址赋给一个普通的、非 const 对象的指针会导致编译时的错误:const double pi = 3.14;double *ptr = &pi;//error

  不能使用 void* 指针保存 const 对象的地址,而必须使用 const void* 类型的指针保存 const 对象的地址,

  允许把非 const 对象的地址赋给指向 const 对象的指针,

  const double *cptr;double dval = 3.14;cptr=&dval;//这里就不允许改变dval的值(会使cptr改变,但他是const,一旦定义就不允许改变)cptr 一经定义,就不允许修改其所指对象的值。

4、C风格字符串

    char ca1[] = {'C', '+', '+'};C++风格,没有以null结尾
    char ca2[] = {'C', '+', '+', '\0'};   char ca3[] = "C++";都是C风格字符串,以null结尾

5、操纵 C 风格字符串的标准库函数

   strlen(s) 返回 s 的长度,不包括字符串结束符 null
   strcmp(s1, s2) 比较两个字符串 s1 和 s2 是否相同。若 s1 与 s2 相等,返回 0;若 s1 大于 s2,返回正数;若 s1 小于 s2,则返回负数
   strcat(s1, s2) 将字符串 s2 连接到 s1 后,并返回 s1
   strcpy(s1, s2) 将 s2 复制给 s1,并返回 s1
   strncat(s1,s2,n)  将 s2 的前 n 个字符连接到 s1 后面,并返回 s1
   strncpy(s1,s2, n)  将 s2 的前 n 个字符复制给 s1,并返回 s1

   今天就到这里,有不足的地方还请指正,谢谢大家!


  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值