zoukankan      html  css  js  c++  java
  • interator & vector(迭代器与向量实例)

    我们知道可以通过下标运算符‘[]’来访问vector对象的元素。

    vector是一种标准库容器,除了vector容器标准库还有其他的容器。

    所有容器都支持迭代器,但只有少数支持下标运算符。所以使用迭代器更加方便,不会出现问题。

    下面是一些实例,运行环境是vs2015,在sublime3中不支持。

    #include <string.h>
    #include <vector>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    #if 0 //vector 1 对向量的基本操作 
    	vector<int>obj;//创建一个向量存储容器 int
    	for (int i = 0; i<10; i++) // push_back(elem)在容器最后添加数据 
    	{
    		obj.push_back(i);
    		cout << obj[i] << ",";
    	}
    
    	for (int i = 0; i<5; i++)//去掉容器最后一个数据 
    	{
    		obj.pop_back();
    	}
    
    	cout << "
    " << endl;
    
    	for (int i = 0; i<obj.size(); i++)//size()容器中实际数据个数 
    	{
    		cout << obj[i] << ",";//只有向量不为空时,才能通过下标运算符访问向量
    	}
    #endif
    	//新建向量vector
    	//std::vector<int> v1;
    	//std::vector<int> v1(10);
    	//std::vector<int> v1(10,42);
    	//std::vector<int> v1{10};//error
    #if 0 vector2
    	std::vector<int> v1{ 10,42 };
    
    	if (!v1.empty())
    	{
    		int i = v1.size();//获取向量大小
    		cout << "v1.size() = " << i << endl;
    		for (int j = 0; j < i; j++)
    		{
    			cout << v1[j] << " "; //注意,向量如果没有初始化,则不能使用下标访问向量成员
    		}
    
    		cout << endl;
         }
    	else
    	{
    		cout << "v1 is empty
    ";
    	}
    #endif 
    #if 0 //iterator1 通过iterator访问向量成员
    	std::vector<int> v1{ 10,42 };
    	//新建迭代器it,it的类型由对象v1的类型决定,若v1是常量则,it类型为const_iterator
    	//否则it类型为iterator
    	auto it = v1.cbegin();//cbegin返回值类型为const_iterator,返回值的类型与v1对象类型无关
    	int count = 0;
    	while(it != v1.cend())
    	{
    		cout << (*it ++) << endl;//通过迭代器打印v1的成员
    		count ++;
    	}
    	cout << "v1 size = " << count << endl;
    #endif 
    //iterator 2 //通过irerator访问string对象,将string中的第一个单词串变成大写
    	string v_str = "hello world!";
    
    	string::iterator it = v_str.begin();//begin返回值类型为iterator,返回值的类型与v1对象类型有关
    	//将hello变为大写字母形式
    	while(it != v_str.end() && !isspace(*it))
    	{
    		*it = toupper(*it);
    		it++;
    	}
    
    	cout << v_str.c_str() << endl;//打印字符串的值
    
    	system("pause");
    	
    
    	return 0;
    }
    

      打印结果为HELLO world!

  • 相关阅读:
    转ANYTAO的学习方法
    第一次写文章
    分享一个有趣的学习方法,欢迎一起探讨如何提高学习兴趣
    SQL基础
    insert into 后获得自动插入的id(select @@identity)
    如何向ASP.NET Web 服务器控件添加客户端脚本事件
    关键字using的主要用途
    网页设计师必备的10个CSS技巧
    DataSet与DataReader的区别
    由于系统时间修改导致Oracle启动失败
  • 原文地址:https://www.cnblogs.com/KeepThreeMunites/p/11430670.html
Copyright © 2011-2022 走看看