1、cudaHOG代码(删减没有必要的目录)

cudaHOGDetect需要boost库:boost_date_time-vc100-mt-1_40.lib

  • VC++目录->附加库目录D:\boost\boost_1_40_0\stage\lib
  • C\C++目录->常规->D:\boost\boost_1_40_0\include\boost-1_40\

2、STL基本

  • 包含一些列排序搜索算法
  • 调试安全、跨平台
  • 模板:类的宏,也甜饼切割机(cookie cutter),泛型(generic).
  • 类模板:泛型类。函数模板:泛型函数
  • STL标准模板库:一些聪明人写的一系列模板。包括链表,堆栈,队列,列表和排序查找等常用的算法
  • 容器:可容纳一些数据的模板类(分为顺序和关联)。STL中有vector,set,map,multiple,deque等容器
  • 向量(vector):基本数组模板,这是一个容器
  • 游标(Iterator):是一个指针,指向STL容器中的元素,也可以指向其他元素

3、vector向量例子

以下代码户主要是利用游标(iterator,类似于指针)和数组的形式去改变向量中元素的值

#include<iostream>
#include<vector>
using namespace std; void print(vector<int>); int main()
{
vector<int > vec;
vec.push_back(34);
vec.push_back(23);
print(vec);
vector<int>::iterator p;
p=vec.begin();
*p=68;
*(p+1)=69;
//*(p+2)=70;
print(vec);
vec.push_back(101);
vec.push_back(102);
int i=0;
while(i<vec.size())
cout<<vec[i++]<<" ";
cout<<endl;
vec[0]=1000;
vec[1]=1001;
vec[2]=1002;
//vec[3]=1002;
i=0;
while(i<vec.size())
cout<<vec[i++]<<" ";
print(vec);
return 0;
} void print(vector<int> v)
{
cout<<"\n vector size is: "<<v.size()<<endl;
vector<int>::iterator p =v.begin(); }

 

以下代码主要是利用vector求和

  • vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!
  • vector<int>::iterator p2=v1[0];这两句都是错的,这就是与指针的区别http://www.cnblogs.com/qlee/archive/2011/05/16/2048026.html

    vector<int>::iterator p2=&(v1[0]);这两句都是错的,这就是与指针的区别

#include<iostream>
#include<vector>
using namespace std;
int sum(vector<int> vec)
{
int result =0;
vector<int>::iterator p=vec.begin();
while(p!=vec.end())
result+=*p++;
return result;
} int main()
{
vector<int> v1(100); //定义一个包含一百个元素的向量,自动初始化为0
cout<<v1.size()<<endl; //100
cout<<sum(v1)<<endl; //0
v1.push_back (23);
cout<<v1.size()<<endl; //101
cout<<sum(v1)<<endl; //23
v1.resize(1000); //v1.reserve(1000);
v1[900]=900;
cout<<v1[900]<<endl;//900
cout<<v1.front()<<endl;//0
cout<<v1.back()<<endl;//23
v1.pop_back();
cout<<v1.back()<<endl;//0
//vector<int>::iterator p2=v1[0];这两句都是错的
//vector<int>::iterator p2=&(v1[0]);这两句都是错的
return 0; }

以下代码是浅拷贝出错,导致两次析构同一块内存问题:深拷贝会开辟新的空间,浅拷贝不会

#include<iostream>
#include<cstdlib>//cstdlib是C++里面的一个常用函数库, 等价于C中的<stdlib.h>
#include<vector>
using namespace std;
class CDemo
{
public:
CDemo():str(NULL){};
~CDemo()
{
if(str) //delete[] str;
{
static int i=0;
cout<<"&CDemo"<<i++<<"="<<(int *)this<<", str"<<(int *)str<<endl;
delete[] str;
}
}
char *str;
}; int main(int argc, char ** argv)
{
CDemo dl;
dl.str=new char[32];
strcpy(dl.str,"trend micro"); vector<CDemo> *al=new vector<CDemo>();
al->push_back(dl);
delete al;//第一次释放
return EXIT_SUCCESS;//退出时第二次释放
}

解决方法是:在CDemo类中添加一个深拷贝构造函数

CDemo(const CDemo &cd)
{
this->str = new char[strlen(cd.str)+1];
strcpy(str,cd,str);
}

最新文章

  1. 深入理解Java之泛型
  2. 再看 AspriseOCR - OCR应用开发 -20151124
  3. SCC重新建图
  4. bootstrap datetimepicker 中只显示年或者只显示月份
  5. 【循序渐进学Python】4. Python中的序列——字典
  6. 一个csrf实例漏洞挖掘带你了解什么是csrf
  7. YTU 2989: 顺序表基本运算(线性表)
  8. bzoj3036: 绿豆蛙的归宿
  9. JDBC项目实践
  10. spoj 416
  11. Java 9 揭秘(10. 模块API)
  12. WordPress禁止版本修订历史、自动保存和自动草稿最新方法汇总
  13. Bootstrap3 排版-引用
  14. SharePoint 读取选项字段所有Choise
  15. Android Zxing 转换竖屏扫描且提高识别率
  16. 【Android Studio安装部署系列】三十五、从Android studio3.0.1升级到Android studio3.1.4【以及创建android p模拟器的尝试(未成功)】
  17. C# 链表去重 List 一维 二维 分别使用 Distinct() GroupBy() 方法
  18. laravel 框架的 csrf
  19. 使用xhprof会在nginx下报502 Bad Gateway错误
  20. HDOJ 1754 I Hate It (线段树)

热门文章

  1. Linux命令篇-服务器查看日志(续)
  2. Delphi实现程序只运行一次并激活已打开的程序
  3. robotium学习
  4. .gitignore 文件使用说明
  5. Linux上调试python程序
  6. 1085 Perfect Sequence (25 分)
  7. 前端通过url页面传值
  8. 2019河北省大学生程序设计竞赛(重现赛)J-舔狗 (拓扑排序)
  9. HTML中&lt;frameset&gt;标签不显示的问题
  10. VIM查找空格