第九章

顺序容器

容器类型介绍
vector 可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢。
deque 双端队列。支持快速随机访问。在头尾位置插入/删除速度很快。
list 双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快。
forward_list 单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快。
array 固定大小数组。支持快速随机访问。不能添加或者删除元素。
string vector相似的容器,但专门用于保存字符。随机访问块。在尾部插入/删除速度快

 

习题

9.4编写函数,接受一对指向vector<int>的迭代器和一个int值。在两个迭代器指定的范围中查找给定的值,返回一个布尔值来指出是否找到。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

bool FindANumber(int i, vector<int>::iterator v1, vector<int>::iterator v2)
{
    vector<int>::iterator iter = v1;
    for(;iter != v2; ++iter)
    {
        if(*iter == i)
        {
            cout << "find number:" << i << endl;
            return true;
        }

    }
    cout << "not find number" << endl;
    return false;
}

int main()
{
    vector<int> vi;
    for(int i = 0; i < 10 ; ++i)
    {
        vi.push_back(i);
    }

/*    for(auto a : vi)
        cout << a << endl;
*/
    FindANumber(5, vi.begin(), vi.end());
    return 0;
}

9.5重写上一题的函数,返回一个迭代器指向找到的元素。注意,程序必须处理未找到给定值的情况。

vector<int>::iterator FindANumber(int i, vector<int>::iterator v1, vector<int>::iterator v2)
{
    vector<int>::iterator iter = v1;
    for(;iter != v2; ++iter)
    {
        if(*iter == i)
        {
            cout << "find number:" << i << endl;
            return iter;
        }

    }
    cout << "not find number" << endl;
    return v2;
}

 

9.9

vector<int> v1;
const vector<int> v2;
auto it1 = v1.begin(), it2 = v2.begin();
auto it3 = v1.cbegin(), it4 = v2.cbegin();

it1 是 vector<int>::iterator

it2it3 和 it4 是 vector<int>::const_iterator

 

9.14编写程序,将一个list中的char *指针元素赋值给一个vector中的string

    list<const char*> l = {"hi", "c++"};
    vector<string> vc;
    vc.assign(l.begin(), l.end());

 

posted @ 2021-04-23 08:58  11YS  阅读(41)  评论(0编辑  收藏  举报