Geekband C++面向对象高级程序设计-第六周课程2

#容器分类与各种测试1

  #容器的内存结构

  1. 容器大致可分为两种
    1. Sequence Containers;序列式容器
    2. Associative Containers;关联式容器
      1. Unordered Containers;不定序容器
  2. 容器中内存结构
    1. Sequence Containers
      1. Array;
      2. Vector;通过分配器动态扩充内存。
      3. Deque;双向队列两端可进可出(对于内存分配双向可扩充需要重点学习)。
      4. List;双向环状链表。
      5. Forward-List;相对于环状链表,其每个内存块中少一个指针(占四个字节),则对于大量数据元素其结存节省是可观的。
    2. Associative Containers
      1. Set/Multiset;Set中value与key并不区分。
      2. Map/Multimap;Map中每个value对应一个key。
      3. 补充说明,Multi中key是可重复的。没有Multi中key是不可以重复的。         
      4. Unordered Containers;
      5. HashTable Separate Chaining;通常称其为散列表

 #测试程序之辅助函数

  1.得到整型输入内容

long get_a_target_long(){
    long target=0;
    cout << "target (0~ " << RAND_MAX <<"):";
    cin>>target;
    return target; 
} 

  2.将整型内容转换为字符串类型

string get_a_target_string(){
    long target=0;
    char buf[10];
    
    cout << "target (0~" << RAND_MAX <<"):";
    cin>>target;
    snprintf(buf,10,"%d",target);
    return string(buf);
}

  #补充说明:snprintf为C中标准库内容,将其整型target存储到buf中最后string(buf)将其转换为字符串型。

  3.传入对象指针,通过强制类型转换比较其大小

int comparelonogs(const void* a,const void* b){
    return (*(long*)a-*(long*)b);
}

int compareString(const void* a,const void* b){
    if(*(string*)a>*(string*)b)
        return 1;
    else if(*(string*)a<*(string*)b)
        return -1;
    else 
        return 0;
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2018-02-07 10:24  SKY-不认输  阅读(75)  评论(0编辑  收藏  举报