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的 }