10.ref regex unordered_set smartpoint
- ref引用不可以复制的对象
void print(std::ostream &os, int i)
{
os << i << endl;
} //ref引用不可以复制的对象
void main1()
{
vector<int> myint = { ,,,, };
//cout是不可以拷贝的对象,以下出错
//boost::function<void(int)> pt = boost::bind(print, cout, _1);
//ref可以引用不可以复制的对象
boost::function<void(int)> pt = boost::bind(print,boost::ref(cout), _1);
for_each(myint.begin(), myint.end(), pt);
cin.get();
} - 底层是基于hasn的unordered_set集合
//底层是基于hasn的unordered_set集合
void main5()
{
boost::unordered_set<string> myhash;
myhash.insert("");
myhash.insert("1234a");
myhash.insert("1234b");
for (auto ib = myhash.begin(), ie = myhash.end(); ib != ie; ib++)
{
cout << *ib << endl;
}
cin.get();
} - 独享智能指针
void main6()
{
boost::scoped_ptr<int> p1(new int());//智能指针
boost::scoped_ptr<int> p2(new int[]);//智能指针,可以分配但是不推荐
//不可以这样,因为是独享内存
//boost::scoped_ptr<int> p3 = p2;
//释放
p2.reset();
//重新分配内存
p2.reset(new int());
//获取第一个
cout << *p2.get() << endl; //智能指针,存储数组
boost::scoped_array<int> p(new int[]);
p[] = ;
*p.get() = ;
//释放内存
p.reset();
//重新分配内存
p.reset(new int[]);
cin.get();
} - 共享智能指针
class AobjC
{
public:
AobjC()
{
cout << "构造" << endl;
}
~AobjC()
{
cout << "析构" << endl;
}
protected:
private: }; void main7()
{
//共享内存
boost::shared_ptr<AobjC> p1(new AobjC);
boost::shared_ptr<AobjC> p2(new AobjC);
//浅拷贝
boost::shared_ptr<AobjC> p3(p2);
p3.reset();
p3.reset(new AobjC);
//计数
p3.use_count(); boost::shared_array<AobjC> p4(new AobjC[]);
cin.get();
} - 多线程不能用shared_ptr,要用weak_ptr
//shared智能指针,多线程不安全
//DWORD WINAPI printout(LPVOID p)
//{
// boost::shared_ptr<int> *pint = static_cast<boost::shared_ptr<int>*>(p);
// for (int i = 0; i < 5; i++)
// {
// cout << **pint << endl;
// Sleep(1000);
// }
// return 0;
//}
//
//DWORD WINAPI reset(LPVOID p)
//{
// boost::shared_ptr<int>*pint = static_cast<boost::shared_ptr<int>*>(p);
// //释放内存
// pint->reset();
// return 0;
//} DWORD WINAPI printout(LPVOID p)
{
//weak_ptr接管指针
//传递的是int指针的地址,所以要用boost::weak_ptr<int> *pw(多一个*保存)
//传递地址要多加一个*(指针要多一级,便于多一次读取,第一次读存储的地址,第二次读内容)
boost::weak_ptr<int> *pw = static_cast<boost::weak_ptr<int>*>(p);
//弱指针可以锁定,防止多线程访问一个被释放的内存
boost::shared_ptr<int> newp = pw->lock();
for (int i = ; i < ; i++)
{
if (newp)
{
cout << *newp << endl;
}
else
{
cout << "内存释放无法访问" << endl;
}
Sleep();
}
return ;
} DWORD WINAPI reset(LPVOID p)
{
Sleep();
boost::shared_ptr<int>*pint = static_cast<boost::shared_ptr<int>*>(p);
//释放内存
pint->reset();
return ;
} void main()
{
boost::shared_ptr<int> p1(new int());
//帮助在多线程中实现内存保护,没有重载*运算符
boost::weak_ptr<int> p2 = p1;
HANDLE threads[];
threads[] = CreateThread(, , reset, &p1, , );
threads[] = CreateThread(, , printout, &p2, , );
//C++11也有weak_ptr
//std::weak_ptr;
cin.get();
} - 正则表达式
//正则表达式
void main2()
{
string str = "china8848english";
boost::regex expr("\\w+\\d+\\w+");//w+字符 d+数字
cout << boost::regex_match(str, expr);
cin.get();
} //找出匹配的
void main3()
{
string str = "china8engli5sh";
boost::regex expr("(\\w+)\\d(\\w+)");
//保存匹配的
boost::smatch what;
if (boost::regex_search(str, what, expr))
{
cout << what[] << endl;
cout << what[] << endl;
}
else
{
cout << "fail";
}
} //替换
void main4()
{
string str = "china8engli5sh";
boost::regex expr("(\\w + )\\d(\\w + )");
string rp = "--------";
cout << boost::regex_replace(str, expr, rp);
}
10.ref regex unordered_set smartpoint的更多相关文章
- 10 ref 和 out 之间的差别
(1) 两者都是按地址传递的,使用后都将改变原来的数值 (2) ref传进去的參数必须在调用前初始化,out不必 (3) ref传进去的參数在函数内部能够直接使用,而out不可 (4) ref传进去的 ...
- .net正则表达式大全(.net 的 System.Text.RegularExpressions.Regex.Match()方法使用)
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...
- Vue学习笔记:Ref的使用
官网上的说明 1.了解Vue中的$refs在Vue中是怎么访问到DOM元素的 <div id="app"> <h1>{{ message }}</h1 ...
- Regex分组与Pattern正则表达式对象
1.正则规则: 1.String regex = "[1-9]" 表示单个字符的取值范围是 1~9,注意是单个字符的取值范围 2 ...
- Django之Model操作
Django之Model操作 本节内容 字段 字段参数 元信息 多表关系及参数 ORM操作 1. 字段 字段列表 AutoField(Field) - int自增列,必须填入参数 primary_ke ...
- django之一些feature
前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...
- 【Django】--Model字段
参考地址:http://www.cnblogs.com/wupeiqi/articles/6216618.html 所有字段 AutoField(Field) --int自增列,必须填入参数prima ...
- Python-Django进阶
1. 路由系统 浏览器会自动给url后加一个"/" django会自动给路由的正则表达式前面加一个"/" django会给任何不带"/"结尾 ...
- 推荐的PHP编码规范
推荐的PHP编码规范 发布时间: 2014-05-7 浏览次数:2754 分类: PHP教程 推荐的PHP编码规范 一 编辑器设置 1. 使用Tab缩进,不要使用空格 鉴于很多编辑器在保存文件时会自动 ...
随机推荐
- 利用flashback transaction query新特性进行事务撤销
具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.这就是flashback transaction query.f ...
- 光标属性CSS cursor 属性
CSS cursor 属性 CSS cursor属性,以前不知道,如果以后用到自己看的 <html> <body> <p>请把鼠标移动到单词上,可以看到鼠标指针发生 ...
- [Java]serialVersionUID的作用
简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的 字节流中的serialVersionUID与本地相应实体(类 ...
- c#中集成Swagger
Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文 ...
- mybatis的二级缓存的使用
1.引入ehcache的jar包和mybatis整合ehcache的jar包: <!-- ehchache --> <dependency> <groupId>ne ...
- (转载)解决切换Fragment时布局重新实例化
解决切换Fragment时布局重新实例化 作者 instanceof 关注 2015.12.30 17:25* 字数 628 阅读 7616评论 17喜欢 23 关于Fragment 在这简单说一下F ...
- GCC中的强符号和弱符号及强引用和弱引用
1. 强符号和弱符号 1.1 u-boot和kernel中的__weak指令 u-boot和kernel比较普遍地使用了__weak来定义函数. 在include\linux\compiler-gcc ...
- Django框架详解之views
一个简单的视图 一个视图函数,是一个简单的python函数,它接受web请求并且返回web响应.无论视图本身包含什么逻辑,都要返回响应.为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为 ...
- css3之BFC、IFC、GFC和FFC
CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. What's FC?一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ...
- Java根据当前日期获得昨天的当前日期代码实现
代码: import java.text.SimpleDateFormat; import java.util.Date; /** * 根据当前日期获得昨天的当前日期 * @author jinghu ...