zoukankan      html  css  js  c++  java
  • C++_数据结构-符号比较与vector

    C++的符号

    1.运算符重载和符号的多种含义
     C++中的符号
     1.单冒号(:)
        类名     后面的冒号 是用来定义类的继承
        构造函数 后面的冒号 起分割作用,是类给成员变量赋值的方法,初始化列表
        public:和private:后面的冒号
    	struct 位域结构名- 类型说明符 位域名:位域长度 
        
     2. 双冒号(::) 
     	直接用在全局函数前,表示是全局函数
        域操作符
     	表示引用成员函数及变量,作用域成员运算符
     	
     3. &
     	01.位运算符  位运算符作用于位,并逐位执行操作。&  与或非中的与
     	           按位与操作,按二进制位进行"与"运算
     	02. &  作引用
    	03. &  取地址
        &(引用)          ==>用来传值,出现在变量声明语句中位于变量 左边时,表示声明的是引用
    	&(取地址运算符)  ==>用来获取首地址,在给变量赋初值时出现在等号右边
    	                     或在执行语句中作为一元运算符出现时,表示取对象的地址.
    		引用在赋值=的左边,而取地址在赋值的右边
    		和类型在一起的是引用,和变量在一起的是取址	
        指针指向一块内存,它的内容是所指内存的地址;
    	引用则是某块内存的别名,引用不改变指向。不能建立数组的引用			
     
     4. *
         01.算数运算符 两个操作数相乘
     	 02.声明指针的星号 *
     
     			   
     			   
     5. ~
         01.取反运算符,按二进制位进行"取反"运算
     	 02.作为析构函数
     	
     	
     6. ->
           类成员访问运算符
     
     7. <<  
          二进制的左移运算符
        
    
    2.同一功能不同表达
       ( )(函数调用),->(成员访问),,(逗号),[](下标)
         .        :成员访问运算符
         .*, ->*  :成员指针访问运算符
    	 
    	 
    3.多琢磨的内容
     01.指针:
       指针  数组 函数  空指针
        有效的指针声明   int  *ip;        // 指针变量的声明
    	定义一个指针变量、
    	把变量地址赋值给指针、
    	访问指针变量中可用地址的值
     02.形参和实参
        传值参数:
           在内存中开辟新的内存空间,然后把变量值复制到该内存空间来。
    
        引用参数:直接把变量的地址传过来。
            引用参数的好处就是不用产生临时变量,减少内存开销。因此常用于对大对象的操作。
    		而常引用就是为了保护对像不被修改
    		
    	复制构造函数是构造函数的一种,也称拷贝构造函数,
    	   它只有一个参数,参数类型是本类的引用
    	     当用一个对象去初始化同类的另一个对象时,会引发复制构造函数被调用。
    		 为形参的对象,是用复制构造函数初始化的,而且调用复制构造函数时的参数,就是调用函数时所给的实参
    		 如果函数的返冋值是类 A 的对象,则函数返冋时,类 A 的复制构造函数被调用
    

    C++之vector

     #include <vector> std::vector
             Buffer.resize(nSize)  调整容器的大小,使其包含n个元素  void resize (size_type n);
             Buffer.data()
     std::string
     std::stringstream  
     vector<char>如何转string
     vector是
        表示可变大小数组的序列容器。
         vector也采用的连续存储空间来存储元素。可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。
         与其它动态序列容器相比(deques, lists and forward_lists), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。
          对于其它不在末尾的删除和插入操作,效率更低。比起lists和forward_lists统一的迭代器和引用更好。
         本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间
    

    代码示例

    定义,初始化,遍历等	
     #include <iostream>
     #include <vector>
     #include <typeinfo> 
     using namespace std
     
     int main(int argc, char* argv[])
     { 
       std::cout << "Now start";
       std::vector<int> IntTest;
         for (int i = 0; i < 10; ++i)
         {
             IntTest.push_back(i);
         }
     
     	std::cout << typeid(IntTest).name();
         for (std::vector<int>::iterator iter = IntTest.begin(); iter != IntTest.end(); ++iter)
         {
             std::cout << *iter << std::endl;
         }
         return 0;
     
     }
     
     
     
     //通常在include文件中
     // 自定义函数调用其他函数前必须先声明-提供函数原型
     #include <iostream>
     #include <vector>
     using namespace std;
     void ShowVec(const vector<int>& valList);
     int main(int argc, char* argv[])
     { 
       std::cout << "Now start";
       std::vector<int> IntTest;
         for (int i = 0; i < 10; ++i)
         {
             IntTest.push_back(i);
         }
        ShowVec(IntTest);
         return 0;
     }
     
     void ShowVec(const vector<int>& valList)
     { int count = valList.size();
         for (int i = 0; i < count;i++)
         {
             cout << valList[i] << endl;
         }
     }
  • 相关阅读:
    Apache Maven(三):POM
    Mysql的数据库引擎
    一文搞懂tcp和udp
    OSI七层协议大白话解读
    模型的部分知识及ajax的后端应用
    Django之模型层第二篇:多表操作
    Django基础之模型(models)层之单表及各种查询
    Django基础之视图(views)层、模板层
    Django之路由(urls)层
    创建Django项目基础
  • 原文地址:https://www.cnblogs.com/ytwang/p/15269155.html
Copyright © 2011-2022 走看看