vector的初始化补充,list,find函数,指针和迭代器等<<0922



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

//用一个容器去初始化另一个容器
int main(int argc, const char *argv[])
{
    vector<int> vec;
    vec.push_back(12);
    vec.push_back(89);
    vec.push_back(34);
    vec.push_back(23);
    vec.push_back(56);

    vector<int> vec2(vec);//可以用一个容器去初始化另外一个容器,前提是类型相同
    for(int t : vec2)
    {
        cout << t << " ";
    }
    cout << endl;

    return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

//用一段迭代器范围去初始化另一个容器
int main(int argc, const char *argv[])
{
    vector<int> vec;
    vec.push_back(12);
    vec.push_back(89);
    vec.push_back(34);
    vec.push_back(23);
    vec.push_back(56);

    vector<int>::iterator it1, it2;
    it1 = vec.begin(); //12
    it2 = find(vec.begin(), vec.end(), 23);//使用find函数查找指定迭代器范围中 的元素
/*补充另外一个find的使用方法,string中
 *可以使用s.find("")
 *s.find("",5)//从第五个开始找
 *s.find(str)
 *s.find('');
 *
 *
 */
    vector<int> vec2(it1, it2);//使用一段迭代器范围初始化一个容器,此时类型可以不同,可以将int改为double
    for(int i : vec2)//新的for循环的写法,直接遍历容器,当容器里面的元素为string时,为了加快效率前面可以写成for(const string &s : vec2),有时候为了简便,直接使用auto &s也可以
    {
        cout << i << " ";
    }
    cout << endl;
    return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <list>
using namespace std;

int main(int argc, const char *argv[])
{
    list<string> lst;
    lst.push_back("beijing");
    lst.push_back("shanghai");

    lst.push_front("shenzhen");//list多了一个可以在前面插入的方式,因为它是随机存储

    for(list<string>::const_iterator it = lst.begin();
        it != lst.end();//区别const_iterator和const iterator的区别,前者为迭代器指定的元素只读,后者是迭代器
        ++it)
    {
        cout << *it << " ";
    }

    cout << endl;
    return 0;
}
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

//指针可以当做迭代器
//
int main(int argc, const char *argv[])
{
    int a[5] = {2, 3, 1, 0, 9};
    int *pos = find(a, a + 5, 1);//迭代器和数组中的地址在find里面可以等效
    cout << pos << endl;//比如说也可以使用数组的地址实现对容器的初始化
    cout << &a[2] << endl;
    return 0;
}

原文地址:https://www.cnblogs.com/sunstars/p/3989718.html