#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;
}