• STL — vector(基础)


     基本摘抄自百度百科

    其中,7 的 清空向量转载自    https://blog.csdn.net/a272846945/article/details/51182144

    1,使用条件

    头文件   <vector>     和   using namespace std;  (因为他是属于 C++ 的)

    2,  定义:简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。(度娘)

    3,使用 :

    vector <int> c;       //  长度未知,未初始化

    vector <int> c(10);     //  长度为 10 ,未初始化

    vector <int> c(10,1); //  长度为 10 ,全部初始化为 1

    4,函数

    c.assign(beg,end):将[beg; end)区间中的数据赋值给c。

    c.assign(n,elem):将n个elem的拷贝赋值给c。 

    c.empty(): 空返回true,否则返回false

    c.clear():  清空元素,但不回收空间

      c.front():传回第一个数据

      c.back():传回最后一个数据,不检查这个数据是否存在。

      c.begin():传回迭代器中的第一个数据地址。

      c.end(): 指向迭代器中末端元素的下一个,指向一个不存在元素。

    insert(c.begin()+2,a)       在第三给元素前面插入 a

    erase(c.begin(),c.begin()+3);   删除一个区间,从第一个元素到第二个元素,不包括第三个元素

    find(c.begin(),c.end(),w);  从c.begin()(含它)到c.end()(不含它)的元素中查找 w,若存在w,则返回其在 vector 中的位置,若不存在,则返回  c.end() 的地址

    sort(c.begin(),c.end());   从c.begin()(含它)到c.end()(不含它)的元素进行从小到大排列     需要头文件#include<algorithm>? 这个是快排的函数

    vector添加数据的缺省方法是push_back(),  而不能直接用下标赋值。因为他是动态分配内存的,使用下标只能用来获取已经存在的元素 ,它并不能分配内存给新加进来的数据

    push_back():   函数表示将数据添加到 vector 的尾部,并按需要来分配内存。

    pop_back();  函数表示删除 vector 的最后一个数据

    5,打印

    根据其数据类型,与相同类型的数组操作基本一样

    6,缺点

    时间:运行速度与数组相比较慢

    空间:clear() 无法清空内存。
     
    7, vector 的清空
    ①在每次 for 循环开头将 vector 重新定义,
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<vector>
    #include<map>
    using namespace std;
    map<vector<char>, int>num;
    int main(void)
    {
    	char s1[15];
    	while (gets_s(s1) && s1[0])
    	{
    		char s2[15] = { 0 };
    		for (int i = 0; s1[i]; i++)
    		{
    			s2[i] = s1[i];
    			vector<char> s;    // for循环开头重新定义
    			for (int i = 0; s2[i]; i++)
    			{
    				s.push_back(s2[i]);
    			}
    			num[s]++;
    			//printf("%d
    ", num[s]);
    		}
    	}
    	while (scanf("%s", s1) != EOF)
    	{
    		vector<char> s;   //// for循环开头重新定义
    		for (int i = 0; s1[i]; i++)
    		{
    			s.push_back(s1[i]);
    		}
    		printf("%d
    ", num[s]);
    	}
    	system("pause");
    	return 0;
    }
    

     ②如果我们只是做题,clear();   就可以继续输入下一组数据了,尽管占据的内存大小不一定是我们希望的大小(不是输入新的数据后应该占据的内存大小),但一般不会影响到做题。

        ③用 swap 函数交换,原理开头连接里有

     
     
     8,总结:
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main(void)
    {
    	vector<int>a;          //本质为数组
    	for (int i = 20 - 1; i >= 0; i--)  
    	{
    		a.push_back(i);    //插入尾部
    	}
    	printf("%d
    ", a[5]);  //查询第六个元素
    
    	for (int i = 0; i < a.size(); i++)   //遍历
    	{
    		printf("%d ", a[i]);
    	}puts("");
    
    	puts("sort:");
    	sort(a.begin(), a.end());  // 排序
    	a.erase(a.begin() + 4);    // 删除第五个元素
    	for (int i = 0; i < a.size(); i++)
    	{
    		printf("%d ", a[i]);
    	}puts("");
    
    	system("pause");
    	return 0;
    }
    

     9,二维数组

    int main(void)
    {
    	vector<vector<int>>image(100, vector< int>(100,0));  //  初始化 行列 初始值
    
    	int sr = 1, sc = 1, newColor = 2;
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 3; j++)
    		{
    			scanf("%d", &image[i][j]);
    		}
    	}
    	image = floodFill(image, sr, sc, newColor);
    	for (int i = 0; i < 3; i++)
    	{
    		for (int j = 0; j < 3; j++)
    		{
    			printf("%d ", image[i][j]);
    		}puts("");
    	}
    
    	system("pause");
    	return 0;
    }
    

      

  • 相关阅读:
    【转】glumer Appium + Python环境搭建(移动端自动化)
    【转】自动化测试
    【转】RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】
    [转]RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第一篇【安装】
    异常测试实践与梳理
    加关注
    RF上传图片各种失败坑,使用pywin32来操作windows窗体
    2019年1月23日,好像是这个日子,RF发布了 1.7.3.1 支持python3.6以上了,安装成功。
    虚拟化技术基础
    PostgreSQL 写入数据到Excel时出现 Faithfully yours, nginx 错误处理
  • 原文地址:https://www.cnblogs.com/asdfknjhu/p/12428051.html
Copyright © 2020-2023  润新知