c++------智能指针,tuple多元数组

 

#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>
#include <numeric>
#include <array>
#include <cstring>
#include <cstdio>
#include <windows.h>
#include <memory>
using namespace  std;
void cmem()
{
    while (1)
    {
        double * p = new double[1024 * 1024 * 4];
        Sleep(3000);
        double p;
    }
}
void autoptr()
{
    while (1)
    {
        double * p (new double[1024 * 1024 * 4]);
        auto_ptr<double> autop(p);//创建智能指针,接管这片内存,自动回收
        Sleep(3000);
        double p;
    }
}
void autoptrnew()
{
    while (1)
    {
        Sleep(3000);
        unique_ptr<double> autop(new double[1024*1024*10]);//创建智能指针,接管这片内存,自动回收
        Sleep(3000);
        double p;
    }
}
//智能指针,内存泄漏,自动管理

int main()
{    
    
    //cmem();
    autoptr();//智能指针,自动释放
    autoptrnew();//实现高效数据管理
    system("pause");
}
#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>
#include <numeric>
#include <array>
#include <cstring>
#include <cstdio>
#include <windows.h>
#include <memory>
using namespace  std;
void cmem()
{
    while (1)
    {
        double * p = new double[1024 * 1024 * 4];
        Sleep(3000);
        double p;
    }
}
void autoptr()
{
    while (1)
    {
        double * p (new double[1024 * 1024 * 4]);
        auto_ptr<double> autop(p);//创建智能指针,接管这片内存,自动回收
        Sleep(3000);
        double p;
    }
}
void autoptrnew()
{
    while (1)
    {
        Sleep(3000);
        unique_ptr<double> autop(new double[1024*1024*10]);//创建智能指针,接管这片内存,自动回收
        Sleep(3000);
        double p;
    }
}
//智能指针,内存泄漏,自动管理

int main()
{    
    
    //cmem();
    autoptr();//智能指针,自动释放
    autoptrnew();//实现高效数据管理
    system("pause");
}

C++ tuple类型:

tuple是C++11新标准里的类型。它是一个类似pair类型的模板。pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员。但是每个确定的tuple类型的成员数目是固定的。

1.tuple的简单使用

当我们希望将一些不同类型的数据和成单一对象时,可能大家会想到结构体(类),tuple是一种比结构体来的更加方便的类型 
tuple的简单使用实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
//定义在此头文件下
#include<tuple>
 
using namespace std;
 
int main(void)
{
    tuple<int,int,float> tp(1,2,3.1);
 
    cout<<"第一个元素为:"<<get<0>(tp)<<endl;
    cout<<"第二个元素为:"<<get<1>(tp)<<endl;
    cout<<"第三个元素为:"<<get<2>(tp)<<endl;
 
    return 0;
}

2.tuple所支持的操作

操作说明
make_tuple(v1,v2,v3,v4…vn) 返回一个给定初始值初始化的tuple,类型从初始值推断
t1 == t2 当俩个tuple具有相同数量的成员且成员对应相等时
t1 != t2 与上一个相反
get(t) 返回t的第i个数据成员
tuple_size::value 给定了tuple中成员的数量

3、g++ 编译器报错不是std对象时,要在后面加上 -std=c++11

     对接nosql数据库。

#include <algorithm>
#include <iostream>
#include <functional>
#include <vector>
#include <numeric>
#include <array>
#include <cstring>
#include <cstdio>
#include <windows.h>
#include <memory>
#include <tuple>
using namespace  std;
//多元数值,存取不同的数据类型
int main()
{
    char ch = 'x';
    short sh = 12;
    int num = 12345;
    double db = 123.4;
    char*p = "hello";
    tuple<char, short, int, double, char*> mytuple(ch,sh,num,db,p);
    //int i = 1;
    //auto autov = get<i>(mytuple);//不行,需要常量,需要加const
    //cout << autov << endl;
    auto autov = get<0>(mytuple);
    cout << autov << endl;
    auto autov1 = get<1>(mytuple);
    cout << autov1 << endl;
    auto autov2 = get<2>(mytuple);
    cout << autov2 << endl;
    auto autov3 = get<3>(mytuple);
    cout << autov3 << endl;

    auto autov4 = get<4>(mytuple);
    cout << autov4 << endl;
    //for (auto i:mytuple)//唯一一个不能用auto的
}

 

posted @ 2019-08-05 10:39  白伟碧一些小心得  阅读(1027)  评论(0编辑  收藏  举报