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;
     }
 }
posted @ 2021-09-14 19:17  辰令  阅读(265)  评论(0编辑  收藏  举报