Linux环境下stl库使用(vector)
step1:
#include <iostream> #include <vector> #include <string> using namespace std; main() { vector<string> SS; SS.push_back("The number is 10"); SS.push_back("The number is 20"); SS.push_back("The number is 30"); cout << "Loop by index:" << endl; int ii; ; ii < SS.size(); ii++) { cout << SS[ii] << endl; } cout << endl << "Constant Iterator:" << endl; vector<string>::const_iterator cii; for(cii=SS.begin(); cii!=SS.end(); cii++) { cout << *cii << endl; } cout << endl << "Reverse Iterator:" << endl; vector<string>::reverse_iterator rii; for(rii=SS.rbegin(); rii!=SS.rend(); ++rii) { cout << *rii << endl; } cout << endl << "Sample Output:" << endl; cout << SS.size() << endl; cout << SS[] << endl; swap(SS[], SS[]); cout << SS[] << endl; }
step2:
Compile: g++ exampleVector.cpp Run: ./a.out Output: Loop by index: The number The number The number Constant Iterator: The number The number The number Reverse Iterator: The number The number The number Sample Output: The number The number
此例子主要说明vector的使用。
编程语言方面:vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据
例子2:(作为2纬数组使用)
step1:
#include <iostream> #include <vector> using namespace std; main() { // Declare size of two dimensional array and initialize. vector< vector<, vector<,)); vI2Matrix[][] = ; vI2Matrix[][] = ; vI2Matrix[][] = ; vI2Matrix[][] = ; vI2Matrix[][] = ; vI2Matrix[][] = ; cout << "Loop by index:" << endl; int ii, jj; ; ii < ; ii++) { ; jj < ; jj++) { cout << vI2Matrix[ii][jj] << endl; } } }
step2:
Compile: g++ exampleVector2.cpp Run: ./a.out Loop by index:
例子3:(多纬数组)
step1:
#include <iostream> #include <vector> using namespace std; main() { vector< vector< vector<, vector< vector<, vector<,)) ); ; kk<; kk++) { ; jj<; jj++) { ; ii<; ii++) { cout << vI3Matrix[ii][jj][kk] << endl; } } } }
step2:
[root@localhost stl_test0001]# g++ exampleVector3.cpp [root@localhost stl_test0001]# ./a.out
例子3:(Example of iterators used with a two dimensional vector)
step1:
#include <iostream> #include <vector> using namespace std; main() { vector< vector<int> > vI2Matrix; // Declare two dimensional array vector<int> A, B; vector< vector<int> >::iterator iter_ii; vector<int>::iterator iter_jj; A.push_back(); A.push_back(); A.push_back(); B.push_back(); B.push_back(); B.push_back(); vI2Matrix.push_back(A); vI2Matrix.push_back(B); cout << endl << "Using Iterator:" << endl; for(iter_ii=vI2Matrix.begin(); iter_ii!=vI2Matrix.end(); iter_ii++) { for(iter_jj=(*iter_ii).begin(); iter_jj!=(*iter_ii).end(); iter_jj++) { cout << *iter_jj << endl; } } }
step2:
Compile: g++ exampleVector2.cpp Run: ./a.out Using Iterator:
list使用:
step1:
// Standard Template Library example #include <iostream> #include <list> using namespace std; // Simple example uses type int main() { list<int> L; L.push_back(); // Insert a new element at the end L.push_front(); // Insert a new element at the beginning L.insert(++L.begin(),); // Insert "2" before position of first argument // (Place before second argument) L.push_back(); L.push_back(); list<int>::iterator i; for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; cout << endl; ; }
step2:
Compile: g++ example1.cpp Run: ./a.out Output:
Standard Template Library example using a class.step1
// Standard Template Library example using a class. #include <iostream> #include <list> using namespace std; // The List STL template requires overloading operators =, == and <. class AAA { friend ostream &operator<<(ostream &, const AAA &); public: int x; int y; float z; AAA(); AAA(const AAA &); ~AAA(){}; AAA &operator=(const AAA &rhs); int operator==(const AAA &rhs) const; int operator<(const AAA &rhs) const; }; AAA::AAA() // Constructor { x = ; y = ; z = ; } AAA::AAA(const AAA ©in) // Copy constructor to handle pass by value. { x = copyin.x; y = copyin.y; z = copyin.z; } ostream &operator<<(ostream &output, const AAA &aaa) { output << aaa.x << ' ' << aaa.y << ' ' << aaa.z << endl; return output; } AAA& AAA::operator=(const AAA &rhs) { this->x = rhs.x; this->y = rhs.y; this->z = rhs.z; return *this; } int AAA::operator==(const AAA &rhs) const { ; ; ; ; } // This function is required for built-in STL list functions like sort int AAA::operator<(const AAA &rhs) const { ; ; ; ; } main() { list<AAA> L; AAA Ablob ; Ablob.x=; Ablob.y=; Ablob.z=4.2355; L.push_back(Ablob); // Insert a new element at the end Ablob.x=; L.push_back(Ablob); // Object passed by value. Uses default member-wise // copy constructor Ablob.z=3.2355; L.push_back(Ablob); Ablob.x=; Ablob.y=; Ablob.z=7.2355; L.push_back(Ablob); list<AAA>::iterator i; for(i=L.begin(); i != L.end(); ++i) cout << (*i).x << " "; // print member cout << endl; for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; // print with overloaded operator cout << endl; cout << "Sorted: " << endl; L.sort(); for(i=L.begin(); i != L.end(); ++i) cout << *i << " "; // print with overloaded operator cout << endl; ; }
step2:
Output: 4.2355 4.2355 3.2355 7.2355 Sorted: 7.2355 3.2355 4.2355 4.2355
C++ 函数模板
step1:
#include <iostream> using std::cout; using std::endl; template<class T> T max(const T* data, int size) { T result = data[]; ; i < size ; i++) if(result < data[i]) result = data[i]; return result; } template<class T> T min(const T* data, int size) { T result = data[]; ; i < size ; i++) if(result > data[i]) result = data[i]; return result; } int main() { double data[] = {1.5, 4.6, 3.1, 1.1, 3.8, 2.1}; , , , , , , , }; ]; cout << "Minimum double is " << min(data, dataSize) << endl; cout << "Maximum double is " << max(data, dataSize) << endl; ]; cout << "Minimum integer is " << min(numbers, numbersSize) << endl; cout << "Maximum integer is " << max(numbers, numbersSize) << endl; ; }
step2:
g++ random_shuffle22.cpp [root@localhost stl_test0001]# ./a.out Minimum double is 1.1 Maximum double is 4.6 Minimum integer Maximum integer
参考:
http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html
http://www.cnblogs.com/shixinzhu/archive/2012/03/05/2380203.html
https://www.sgi.com/tech/stl/download.html
Linux环境下stl库使用(vector)的更多相关文章
- Linux环境下stl库使用(map)
例子1: testMap.cpp #include <string.h> #include <iostream> #include <map> #include & ...
- PCL库在Linux环境下的编译安装
PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...
- linux环境下学习使用pro*c/c++工具
1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...
- Linux环境下段错误的产生原因及调试方法小结(转)
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...
- Linux环境下段错误的产生原因及调试方法小结
转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...
- 【转】【调试技巧】Linux环境下段错误的产生原因及调试方法小结
本文转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html 1. 段错误是什么 ...
- 多线程编程之Linux环境下的多线程(一)
一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...
- linux环境下验证码不显示的几种情况
linux环境下验证码不显示的几种情况 gd库扩展没有安装. 查看phpinfo(),看看有没有安装gd库 yum安装gd库或者phpize安装 安装完成后记得重启php-fpm bom头的原因 在生 ...
- mosquitto在Linux环境下的部署/安装/使用/测试
mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...
随机推荐
- SX学SX内容 笔记?
某帖子笔记1 主要还是从三体吧某精品贴里看来的... 集合论 集合就是一堆东西...满足 1) 集合中的元素互异(即每种只有一个) 2) 集合中的元素无序(不是一个数组,集合中的元素没有显然的排序法则 ...
- extjs动态改变样式
{ width:438, height:440, name:'loginDiv', ui:'123', x: '50%' , y: 200, border:true, bodyStyle:{ 'bor ...
- Tomcat部署Web应用的两种方式
WEB工程目录结构 部署方式一:此种方式部署,jsp页面修改后,不能动态更新,需要重新部署才能看到效果.不过可以配置动态更新实现. 部署方式二:此种方式部署,jsp修改后,直接在页面可以看到效果.(因 ...
- 百度云+ KeePass 网络同步你的密码
百度云+ KeePass 网络同步你的密码 百度云一个目前不限流量不限格式能直链的网盘,速度在我这里很快,难得了!KeePass(小众介绍过 KeePass.) 是一个免费开源的密码管理类软件, ...
- windows下打开VMware虚拟机时提示内存不足的处理方法
参考:http://thinkpig007.blog.51cto.com/971471/1589831 以管理员身份运行vmware.exe即可 错误的错误提示: Not enough physica ...
- 20. javacript高级程序设计-JSON
1. JSON JSON是一种数据格式,存在以下三种类型的值: l 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串.数值.布尔值和null,不支持 undefined,例如: ...
- 【动态规划】简单背包问题II
问题 B: [动态规划]简单背包问题II 时间限制: 1 Sec 内存限制: 64 MB提交: 21 解决: 14[提交][状态][讨论版] 题目描述 张琪曼:“为什么背包一定要完全装满呢?尽可能 ...
- 关于定时器 setTimeout
1.这里不考虑线程问题.把javascript想象成在时间线上运行,页面载入时,首先执行的是<script>标签中的代码,之后,将执行更多代码,当进程空闲时,下个代码就被触发并执行 如图: ...
- spring mvc 重定向问题
(1)我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的.我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我要跳转到列表页面,不需要传递参数,列表 ...
- 【python】dict4ini和xmltodict模块用途
dict4ini模块:可以读写配置文件 xmltodict模块:将xml和json互相转换 https://pypi.python.org/pypi/xmltodict