//
// PointerToValue.cpp
// Working
//
// Created by Hawkins, Dakota Y on 6/3/16.
// Copyright 2016 Hawkins, Dakota Y. All rights reserved.
// #include "PointerToValue.hpp"
#include <cstdio>
#include <vector>
#include <iostream> using namespace std; template <typename element>
element *find_value(vector<element> &vec, element value)
{
for (int i = ; i < vec.size(); i++)
{
if (vec[i] == value)
{
return &vec[i];
}
}
return ;
} template <typename T>
T *find_value(T *array, int size, T value)
{
if (! array || size < )
{
return ;
}
for (int i = ; i < size; i++)
{
if (array[i] == value)
{
return &array[i];
}
}
return ;
} template <typename element>
int find_pos(vector<element> &vec, element value)
{
int pos_val;
for (int i = ; i < vec.size(); i++)
{
if (vec[i] == value)
{
pos_val = i;
return pos_val;
}
}
return ;
} int main()
{
int int_array[] = {, , , , };
string str_array[] = {"Hello", ",", "how", "are", "you?"};
float float_array[] = {0.123, 4.5, 10.1, 5.7, }; vector<int> int_vector(int_array, int_array + );
vector<string> str_vector(str_array, str_array + );
vector<float> float_vector(float_array, float_array + ); cout << "pos of 3 = " << find_pos(int_vector,) <<endl; cout << "Pointer of '3' in 'int_vector': " << find_value(int_vector, ) << endl;
//cout <<*(find_value(int_vector, 3))<<endl; //cout the value of 3 cout << "Pointer of 'Hello' in 'str_vector': " << find_value(str_vector, string("Hello")) << endl; float f_test = 11.1;
cout << "Pointer of '11.1' in 'float_vector': " << find_value(float_vector, f_test) << endl; float first_value = float_array[];
cout << "Pointer of 4.5 in 'float_array': " << find_value(&first_value, int(), float(4.5)) << endl;
return ;
}

输出:

pos of 3 = 4
Pointer of '3' in 'int_vector': 0x1c1554
Pointer of 'Hello' in 'str_vector': 0x1c1a50
Pointer of '11.1' in 'float_vector': 0
Pointer of 4.5 in 'float_array': 0x73fc8c

Essential C++ 3.1 节的代码练习——指针方式的更多相关文章

  1. Essential C++ 3.1 节的代码练习——哨兵方式

    #include "IncrementArray.hpp" template <typename element> element *find_address(elem ...

  2. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如 ...

  3. linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...

  4. java 22 - 9 多线程之 代码实现的方式2

    多线程的代码实现: 方式2:实现Runnable接口 步骤: A:自定义类MyRunnable实现Runnable接口 B:重写run()方法 C:创建MyRunnable类的对象 D:创建Threa ...

  5. C#不安全代码和指针

    从通常情况下来看,为了保持类型安全,默认情况C# 不支持指针算法. 不过,当你需要使用指针的时候,请通过使用 unsafe 关键字,可以定义可使用指针的不安全上下文. 有关指针的更多信息,请参见主题指 ...

  6. Entity Framework入门教程(18)---EF6中基于代码进行配置方式

    EF6中基于代码进行配置方式 我们以前对EF进行配置时是在app.config/web.config下的<entityframework>节点下进行配置的,EF6引进了基于代码的配置方法. ...

  7. 实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)

    使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程 ...

  8. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

  9. IntelliJ IDEA设置代码括号对齐方式

    IntelliJ IDEA设置代码括号对齐方式 IntelliJ IDEA默认的对齐方式如下:括号跟函数名在一行 想改为括号独自占一行,如下: 配置方式如下:File->Setting-> ...

随机推荐

  1. Soup协议-即普通post请求,内容域xml

    1.基础问题 1.1 soup-Simple Object Access Protocal简单对象访问协议 a).承载在http协议之上,http支持传输img/html/文件等,soup请求和响应域 ...

  2. 洛谷P1397 [NOI2013]矩阵游戏(十进制矩阵快速幂)

    题意 题目链接 Sol 感觉做这题只要对矩阵乘法理解的稍微一点就能做出来对于每一行构造一个矩阵A = a 1      0 b列与列之间的矩阵为B = c 1      0 d最终答案为$A^{n - ...

  3. BZOJ3693: 圆桌会议(Hall定理 线段树)

    题意 题目链接 Sol 好的又是神仙题... 我的思路:对于区间分两种情况讨论,一种是完全包含,另一种是部分包含.第一种情况非常好判断,至于计算对于一个区间[l, r]的$\sum a[i]$就可以了 ...

  4. Vue-watch选项

    Vue ----watch 选项 用于 监听数据变化: <!DOCTYPE html> <html lang="en"> <head> < ...

  5. 【ros-kinetic iai_kinect2 opencv2 3 】注意事项

    iai_kinect2 :  https://github.com/code-iai/iai_kinect2/tree/master/kinect2_registration kinect2_brid ...

  6. centos7 源码编译nginx

    使用configure命令配置编译.它定义了系统的各个方面,包括允许使用 nginx 进行连接处理的方法.最后它创建一个Makefile.该configure命令支持以下参数: --prefix=pa ...

  7. grafana快速入门

    入门 本指南将帮助您开始并熟悉Grafana.它假定您有一台正在运行的Grafana服务器,并至少添加了一个数据源. 初学者指南 观看10分钟的初学者指南,以建立仪表板,以快速介绍设置仪表板和面板. ...

  8. 打包ios软件并发布到应用商店

    真心感慨程序员是一个神奇的动物. 昨天接到任务,将项目打包并发布到apple商店.于是乎... 利用Hbuilder打包 需要的3个文件: AppId,描述文件profile,以及私钥证书 必须条件: ...

  9. 【洛谷1967】货车运输(最大生成树+倍增LCA)

    点此看题面 大致题意: 有\(n\)个城市和\(m\)条道路,每条道路有一个限重.多组询问,每次询问从\(x\)到\(y\)的最大载重为多少. 一个贪心的想法 首先,让我们来贪心一波. 由于要求最大载 ...

  10. linux 查看帐号创建时间

    查看用户的home目录的创建时间 查看日志 用stat 命令,可以看到目录的三个时间.不过这个时间只是用来参考的,确定一个范围. 查看日志是最准确的方法 /var/log/auth.log ,前提是你 ...