vector初始化

三十分钟学习STL【转载】

≯℡__Kan透↙ 提交于 2019-11-26 18:36:52
原文: http://net.pku.edu.cn/~yhf/UsingSTL.htm 太长30分钟是看不完的,不过花一个小时把他看完能对STL有个大致的了解,g++下需要加iterator头文件 以下为原文 这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。 译者:kary contact:karymay@163.net STL概述 STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。 要点 STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆括弧的方式表示,例如sort()。 STL另一个重要特性是它不是面向对象的。为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。这好像是一种倒退,但这正好是使得STL的组件具有广泛通用性的底层特征。另外,由于STL是基于模板,内联函数的使用使得生成的代码短小高效。 提示

c++ vector和map的使用

孤街醉人 提交于 2019-11-26 10:33:32
参考链接 MAP: https://www.cnblogs.com/panweiwei/p/6657583.html VECTOR: https://blog.csdn.net/shuoyueqishilove/article/details/80431927 vector的初始化(元素插入) vector<int> vec1={1,2,4}; vector<int> vec2; vec2.push_back(1); vec2.push_back(2); vec2.push_back(4); vector<int> vec3(10,0);//初始化10个为0的int型 关于vector的函数 v.empty();//检查是否为空 v.capacity();//返回当前vector中最大可以存储数据的容量 v.size();//返回v中元素的个数 v[n];//获取v中第n个元素 map的插入 map<key,value> map<int,int> mp; mp.insert(map<int,int>::value_type(nums[i],i)); mp[1]=2; map的函数 begin() 返回指向map头部的迭代器 clear() 删除所有元素 count() 返回指定元素出现的次数 empty() 如果map为空则返回true end() 返回指向map末尾的迭代器

vector与ArrayList的区别

北城以北 提交于 2019-11-26 09:32:20
Vector类称作向量类,它实现了动态数组,是可以实现自动增长的对象数组 Vector 与 ArrayList的区别 相同点:底层数据结构相同,都是Object类型的数组 不同点: 1、Vector的add()方法是同步(synchroniszed)方法,ArrayList的add()方法是非同步方法 2、Vector是在调用构造方法(创建对象)时,直接初始化容量为10,ArrayList是在第 一次调用添加(add)方法时,初始化容量为10 3、Vector扩容每次扩容1倍,ArrayList每次扩充0.5倍 4、Vector的版本是JDK1.0 ArrayList是JDK1.2版 5、Vector是线程同步的,安全性高 ,效率低;ArrayList是线程非同步的,安全性低,效率高。 ArrayList和Vector功能类似。 整体上ArrayList是Vector的“裸奔新版” Vector从Java 1.0起就存在,ArrayList从Java 1.2起才存在,较新。 所以Vector在JavaME、Card等各种微小版本都可以使用,而ArrayList不能 ArrayList不具备 线程 同步的安全性,但速度较快,所以叫裸奔。 Vector具备线程安全。 来源: https://blog.csdn.net/weixin_45397671/article/details

opencv标定

天涯浪子 提交于 2019-11-26 01:55:28
https://blog.csdn.net/u012319493/article/details/77622053 #include #include #include <time.h> #include <stdio.h> #include #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/calib3d/calib3d.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; void main() { ifstream fin(“calibdata.txt”); / 标定所用图像文件的路径 / ofstream fout(“caliberation_result.txt”); / 保存标定结果的文件 / // 读取每一幅图像,从中提取出角点,然后对角点进行亚像素精确化 int image_count = 0; / 图像数量 / Size image_size; / 图像的尺寸 / Size board_size = Size(9, 6); / 标定板上每行、列的角点数 / vector image_points_buf; /

C++ vector容器类型的使用

不打扰是莪最后的温柔 提交于 2019-11-26 01:37:26
vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为了使用vector 我们必须包含相关的头文件 : #include <vector> 使用vector有两种不同的形式,即所谓的 数组习惯 和 STL习惯 。 一、数组习惯用法 1. 定义一个已知长度的 vector : vector< int > ivec ( 10 ); //类似数组定义int ia [ 10 ]; 可以通过ivec[ 索引号 ] 来访问元素 使用 if ( ivec.empty() ) 判断是否是空, ivec.size() 判断元素个数。 2. vector的元素被初始化为与其类型相关的缺省值: 算术和指针类型的缺省值是 0,对于class 类型,缺省值可通过调用这类的缺省构造函数获得 ,我们还可以为每个元素提供一个显式的初始值来完成初始化,例如 vector< int > ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1 对于内置数组 我们可以显式地把数组的元素初始化为一组常量值,例如 : int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 }; 我们不能用同样的方法显式地初始化 vector ,但是可以将 vector 初始化为一个已有数组的全部或一部分