C++的&与* istringstream sin(s) 函数模板和类

#include<iostream>
#include<string>
using namespace std;
int main()
{
int a=5,b=10,c=15;
int *p1;                //int * 是定义p1为指针,
int &d=b;               //&引用d为b.
p1=&a;                  //&取地址
cout <<*p1<<endl;        //×取p1地址的内容。
return 0;
}
template <
        typename image_scanner_type_      //定义了函数模板,image_scanner_type_是一种类型。
        >
    class object_detector
    {
    public:
        typedef image_scanner_type_ image_scanner_type;   //定义了类型
        typedef typename image_scanner_type::feature_vector_type feature_vector_type;
    。。。。。。

typedef创建了存在类型的别名,而typename告诉编译器image_scanner_type::feature_vector_type
是一个类型而不是一个成员。

若不加typename则不知道image_scanner_type::feature_vector_type是静态数据成员 
静态成员函数 嵌套类型 中的哪一个。
vector < Rect > faces  是容器。
vector是一种数据结构
表示这个容器的类型是Rect,Rect是一种数据类型,类似int,float等。。
整体定义了faces对象是一个RECT数组。

 

namespace dlib
{
    typedef object_detector<scan_fhog_pyramid<pyramid_down<6> > > frontal_face_detector;
    inline const std::string get_serialized_frontal_faces();

    inline frontal_face_detector get_frontal_face_detector()
    {
        std::istringstream sin(get_serialized_frontal_faces());
//C++中有三种字符串流,分别是istringstream ,ostringstream,stringstream,分别处理字符串流的输入,
//输出,和输入输出。istringstream sin(s);定义一个字符串输入流的对象sin,并调用sin的复制构造函数,
//将s中所包含的字符串放入sin 对象中!
        frontal_face_detector detector;
        deserialize(detector, sin);
        return detector;
    }
。。。。。。。
template <typename T>
    void deserialize (
        object_detector<T>& item,
        std::istream& in 
    )
    {
        int version = 0;
        deserialize(version, in);
        if (version == 1)
        {
            deserialize(item.scanner, in);
            item.w.resize(1);
            deserialize(item.w[0].w, in);
            item.w[0].init(item.scanner);
            deserialize(item.boxes_overlap, in);
        }
        else if (version == 2)
        {
            deserialize(item.scanner, in);
            deserialize(item.boxes_overlap, in);
            unsigned long num_detectors = 0;
            deserialize(num_detectors, in);
            item.w.resize(num_detectors);
            for (unsigned long i = 0; i < item.w.size(); ++i)
            {
                deserialize(item.w[i].w, in);
                item.w[i].init(item.scanner);
            }
        }
        else 
        {
            throw serialization_error("Unexpected version encountered while deserializing a dlib::object_detector object.");
        }
    }

// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
//                      object_detector member functions
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------

    template <
        typename image_scanner_type
        >
    object_detector<image_scanner_type>::
    object_detector (
    )
    {
    }

// ----------------------------------------------------------------------------------------

    template <
        typename image_scanner_type
        >
    object_detector<image_scanner_type>::
    object_detector (
        const object_detector& item 
    )
    {
        boxes_overlap = item.boxes_overlap;
        w = item.w;
        scanner.copy_configuration(item.scanner);
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值