C++ 11 智能指针 lamda 以及一个 围棋程序
lamda表达式使用
char* p = "Hello world";
int ne = ,nl = ;
for_each(p,p+, [&](char i){ if(i=='e') ne++; if(i=='l')nl++; });
cout<<"e: "<< ne <<endl<<"l: "<<nl<<endl;
for_each 第三个参数 原来应该是函数
此处用lamda表达式完成
智能指针使用
我不知道循环右移如何使用智能指针
就在一个函数里面完成了循环右移
因为智能指针有以下功能
当智能指针本身被删除释放的时候(比如,离开了某个作用域),会使用给定的删除器释放它指向的对象
所以我在函数内使用了智能指针,希望函数结束,申请的空间自动释放
void move(int x){
auto s = unique_ptr <string>(new string("Hello world!"));
auto ss = s.get();
auto i = (*ss).end();
for_each (i-x%(*ss).length(),i,[&](char a){cout<<a;});
for_each ((*ss).begin(),i-x%(*ss).length(),[&](char a){cout<<a;});
}
以上两个作业我写在了一个文件中
#include<iostream>
#include <algorithm>
#include<string>
#include<memory>
using namespace std; void move(int x){
auto s = unique_ptr <string>(new string("Hello world!"));
auto ss = s.get();
auto i = (*ss).end();
for_each (i-x%(*ss).length(),i,[&](char a){cout<<a;});
for_each ((*ss).begin(),i-x%(*ss).length(),[&](char a){cout<<a;});
} int main(){
char* p = "Hello world";
int ne = ,nl = ;
for_each(p,p+, [&](char i){ if(i=='e') ne++; if(i=='l')nl++; });
cout<<"e: "<< ne <<endl<<"l: "<<nl<<endl; int x;
cin>>x;
move(x);
return ;
}
运行截图

围棋
1.写代码
看了大半夜 终于看懂这代码了
恢复棋步就是需要一下几个步骤
先把下的那个子去除 removeStone();
再把DeadGroup中的死棋拿出来恢复
再更新一下m_gmLastMove
public void playPrev(GoMove gm)
{
Point a = gm.Point; //先移除该棋子
Grid[a.X,a.Y].removeStone(); //判断是否有死棋 且不是自己作死的棋
if (gm.DeadGroup != null && gm.DeadGroupColor != gm.Color)
{
foreach (Point p in gm.DeadGroup)
{
Grid[p.X,p.Y].setNoKilled();
Grid[p.X, p.Y].setStone(gm.DeadGroupColor);
}
} m_gmLastMove = gameTree.peekPrev();
if (m_gmLastMove != null)
Grid[m_gmLastMove.Point.X, m_gmLastMove.Point.Y].setUpdated(); optRepaint();
return;
}

2.根据你选择的教材 (三本之一或更多),点评一下这个程序设计方面的不足
感觉这个程序写的很随意 一些类和方法都是什么构造出来但却不使用
不足有以下几点
1.有些函数作用不够清晰,或者说封装不合适
2.有些变量命名难以让人理解 如int m_n 乍一看还以为是一个不是很重要的变量 实际却是棋步数 而其他地方的棋步数却是seq 应该用m_seq比较合适
3.整个代码结构感觉混乱
4.错不处理不行
但是如果这是一个java大作业的话 我觉得已经可以接受了。
代码分析工具

这些警告太多了。。。就不一个一个更改了
我查看了一下主要分为几类
1.标示符大小写问题
2.标示符命名要有意义 别老是就m,n,i,j,k
3.丢失范围之前释放对象
4.尽量使用私有化成员
3.代码注释
已经上传github
C++ 11 智能指针 lamda 以及一个 围棋程序的更多相关文章
- C++11智能指针 share_ptr,unique_ptr,weak_ptr用法
0x01 智能指针简介 所谓智能指针(smart pointer)就是智能/自动化的管理指针所指向的动态资源的释放.它是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动 ...
- c++11 智能指针 unique_ptr、shared_ptr与weak_ptr
c++11 智能指针 unique_ptr.shared_ptr与weak_ptr C++11中有unique_ptr.shared_ptr与weak_ptr等智能指针(smart pointer), ...
- C++11——智能指针
1. 介绍 一般一个程序在内存中可以大体划分为三部分——静态内存(局部的static对象.类static数据成员以及所有定义在函数或者类之外的变量).栈内存(保存和定义在函数或者类内部的变量)和动态内 ...
- C++11智能指针之std::unique_ptr
C++11智能指针之std::unique_ptr uniqut_ptr是一种对资源具有排他性拥有权的智能指针,即一个对象资源只能同时被一个unique_ptr指向. 一.初始化方式 通过new云 ...
- 【C++11新特性】 C++11智能指针之weak_ptr
如题,我们今天要讲的是C++11引入的三种智能指针中的最后一个:weak_ptr.在学习weak_ptr之前最好对shared_ptr有所了解.如果你还不知道shared_ptr是何物,可以看看我的另 ...
- 详解C++11智能指针
前言 C++里面的四个智能指针: auto_ptr, unique_ptr,shared_ptr, weak_ptr 其中后三个是C++11支持,并且第一个已经被C++11弃用. C++11智能指针介 ...
- C++11 智能指针
C++ 11标准库引入了几种智能指针 unique_ptr shared_ptr weak_ptr C++内存管理机制是当一个变量或对象从作用域过期的时候就会从内存中将他干掉.但是如果变量只是一个指针 ...
- C++11智能指针
今晚跟同学谈了一下智能指针,突然想要看一下C++11的智能指针的实现,因此下了这篇博文. 以下代码出自于VS2012 <memory> template<class _Ty> ...
- C++11智能指针的深度理解
平时习惯使用cocos2d-x的Ref内存模式,回过头来在控制台项目中觉得c++的智能指针有点生疏,于是便重温一下.首先有请c++智能指针们登场: std::auto_ptr.std::unique_ ...
随机推荐
- js获取对象所有的keys
Js中获取对象的所有key值 假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的 ...
- IIS无法识别的属性targetFramework
出现这种错误是因为发布网站时iis的应用程序池默认使用的是.net framework v2.0.50727.4927,而开发的网站用的是.net framework 4.5,所以会出现这种错误. 我 ...
- Java中的逻辑运算符短路效应
在Java中逻辑运算符&& 和 ||,它们都存在短路效应. 对于a && b,只有当a和b同时为true时,整个表达式才为true(在java中,首先运算表达式a,如果 ...
- 前端jQuery之事件流
1.事件流概念 描述的是从页面中接收事件的顺序 包含事件捕获阶段,处于目标阶段,事件冒泡阶段 2.绑定事件 语法 bind(type,data,fn) 示例:每个标签被点击的时候,弹出其文本 $(&q ...
- 修改SecureCRT默认会话字符集
修改SecureCRT默认会话字符集 1.找到SecureCRT配置文件 Default.ini 2.修改Default修改为UTF-8 将S:"Output Transformer Nam ...
- 10-UIScrollView
UIScrollView 掌握 UIScrollView的常见属性 UIScrollView的常用代理方法 UIScrollView的缩放 UIScrollView和UIPageControl的分页 ...
- vue2.x结合百度UEditor富文本编辑器
1.首先下载UEditor源码(https://ueditor.baidu.com/website/),将整个文件放到static文件夹中 2.在src/components文件夹下创建公共组件UEd ...
- lnmp安装后,phpmyadmin空白
使用lnmp 一键安装后,运行phpinfo是没有问题的,说明php没有问题,但是运行phpmyadmin确实一片空白,网上说的解决方案有几种: 1.config.inc.php增加一个配置$cfg[ ...
- C++使用GDI+实现图片格式转换
主要是我在设置壁纸时遇到的个小问题,因为设置壁纸只能是bmp格式的图片,不可能我喜欢的壁纸就都是bmp格式的,就想怎么转换一下图片的格式,于是就在百度搜怎么弄,搜到了可行方法,却没有实现代码,有些看起 ...
- Sublime Text3的快捷键和插件
今天重装了一下Sublime Text3,发现了一个不错的网站,关于Sublime Text3的插件安装介绍的很详细,还有右键增强菜单和浏览器打开快捷键的创建.奉上链接 http://www.cnbl ...