Essential C++ 3.1 节的代码练习——哨兵方式
#include "IncrementArray.hpp" template <typename element>
element *find_address(element *array, int size, element &value)
{
if (! array || size < )
{
return ;
}
for (int i = ; i < size; ++i, ++array)
{
if ((*array) == value)
{
return array;
}
}
return ;
} template <typename element>
element *use_sentinel(element *first_address, element *sentinel, element &value)
{
if (! first_address || ! sentinel)
{
return ;
}
for (; first_address != sentinel; ++first_address)
{
if ((*first_address) == value)
{
return first_address;
}
}
return ;
} int main()
{
cout << "Hello, Hal.\n";
string string_array[] = {"hey", "hey", "you", "you", "I", "Don't", "Like", "Your", "Girlfriend"}; vector<string> avril(string_array, string_array + );
string who = "Girlfriend"; cout << "I don't like your Girlfriend. I know her address: " << find_address(&(avril[]), , who) << endl; int integer_array[] = {, , , };
int four = ;
cout << "Where's 4? Oh, here it is: " << use_sentinel(&(integer_array[]), &(integer_array[]) + , four) << endl; int ia[] = { , , , , , , , };
double da[] = {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
string sa[] = {"lim","aaa","ddd","dcc"}; int *pi = use_sentinel(ia,ia+,ia[]);
double *pd = use_sentinel(da,da+,da[]);
string *ps = use_sentinel(sa, sa+, sa[]); cout << "ps=" << ps << " pd=" << pd << " pi=" << pi << endl; return ;
}
输出:
template <typename elemType>
const elemType * find_ver5(const elemType *first,
const elemType *last, const elemType &value )
{
if ( ! first || ! last )
return ; // while first does not equal last,
// compare value with element addressed by first
// if the two are equal, return first
// otherwise, increment first to address next element for ( ; first != last; ++first )
if ( *first == value )
return first; return ;
}
main函数中需要这么定义,加const。
const int *pi = find_ver5(ia,ia+,ia[]);
否则无法编译通过。
Essential C++ 3.1 节的代码练习——哨兵方式的更多相关文章
- Essential C++ 3.1 节的代码练习——指针方式
// // PointerToValue.cpp // Working // // Created by Hawkins, Dakota Y on 6/3/16. // Copyright 2016 ...
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如 ...
- linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...
- java 22 - 9 多线程之 代码实现的方式2
多线程的代码实现: 方式2:实现Runnable接口 步骤: A:自定义类MyRunnable实现Runnable接口 B:重写run()方法 C:创建MyRunnable类的对象 D:创建Threa ...
- Entity Framework入门教程(18)---EF6中基于代码进行配置方式
EF6中基于代码进行配置方式 我们以前对EF进行配置时是在app.config/web.config下的<entityframework>节点下进行配置的,EF6引进了基于代码的配置方法. ...
- 实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)
使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光 学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程 ...
- 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。
如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...
- IntelliJ IDEA设置代码括号对齐方式
IntelliJ IDEA设置代码括号对齐方式 IntelliJ IDEA默认的对齐方式如下:括号跟函数名在一行 想改为括号独自占一行,如下: 配置方式如下:File->Setting-> ...
- LInux内核分析--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
实验者:江军 ID:fuchen1994 实验描述: 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3 ...
随机推荐
- ASP.NET Core模块化前后端分离快速开发框架介绍之4、模块化实现思路
源码 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin 前 ...
- (转)IE6 死后即将大快人心的10件事
(转)未来五年程序员应当具备的十项技能 W3C CSS 2.1 Specification(Quick Table of Contents) (转)IE6 死后即将大快人心的10件事 2009-04- ...
- 实现多行文字居中方法(兼容IE6)
<p class="mulit_line"> <span style="font-size:12px;">这里是高度为150像素的标签内 ...
- spring的工厂方法
http://blog.csdn.net/nvd11/article/details/51542360
- View模块
一.应用场景 通过View的类注释,可知,Backbone.view是一个JS构造函数,与DOM中的某一块UI相对应,通过注册模型层数据的监听,可实现视图的自动渲染. Backbone.View模块也 ...
- 会话跟踪之Cookie
一:简介 Cookie主要用来存储用户信息,追踪用户会话.web客户端访问服务端直接采用的协议是Http,Http协议是一种无状态协议,无状态表现在不能够保留用户访问状态,无法记录用户信息.每一次的请 ...
- es6-异步应用
异步编程对 JavaScript 语言太重要.Javascript 语言的执行环境是“单线程”的,如果没有异步编程,根本没法用,非卡死不可.本章主要介绍 Generator 函数如何完成异步操作. 传 ...
- rem媒体查询
@media only screen and (min-width: 1080px), only screen and (min-device-width:1080px) { html,body { ...
- Java中对jsonArray的排序,使用的是Gson
使用Gson对json解析字符串,转化为json对象. 先上代码: 下面是main方法里面的代码 package testJava; import java.util.ArrayList; impor ...
- Bugzilla-5.0.3 (OpenLogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.6 bugzilla5.0.3 mariadb5.5.47 perl5.16.3 apache bug tracking bug ...