//
// 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. Oracle视图,索引,序列

    什么是视图[View] (1)视图是一种虚表 (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表(3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELEC ...

  2. HDU 5496——Beauty of Sequence——————【考虑局部】

    Beauty of Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  3. 修改response,报错Cannot call getWriter(), getOutputStream() already called

    往response里面改数据,然后系统报这个错 此时直接return null即可解决 但是,要想返回相应的页面呢? 可以直接在response里设置返回的页面

  4. ruby firefox23报错:waiting for evaluate.js load failed

    解决方法 gem install selenium-webdriver -v='2.34.0'

  5. StringMVC返回字符串

    @RequestMapping(value="twoB.do") public void twoBCode(HttpServletRequest request,HttpServl ...

  6. mysql语句删除重复数据,保留一条;查询所有重复数据;查询重复数据的一条,

    //显示重复的所有条 SELECT * FROM 表名 WHERE (字段1,字段2,...) IN (SELECT 字段1,字段2,...FROM 表名 GROUP BY 字段1,字段2,... H ...

  7. Mavlink消息包解析

    Byte Index 字节索引 Content 内容 Value 值 Explanation 说明 0 包起始标志 v1.0: 0xFE (v0.9: 0x55) 指示新消息帧的开始.在v1.0版本中 ...

  8. JS 获取 今日、昨日、本周、本月、本季度、本年、上月、上周、上季度、去年

    /** * 日期范围工具类 */ var dateRangeUtil = (function () { /*** * 获得当前时间 */ this.getCurrentDate = function ...

  9. echarts折线图相关

    optionJKDLine = { title: { text: '告警数量趋势图', textStyle:{ //标题样式 fontStyle:'normal', fontFamily:'sans- ...

  10. js绑定事件方法:addEventListener的兼容问题

    js的事件绑定方法中,ie只支持attachEvent,而FF和Chrome只支持addEventListener;严格来说:addEventListener只有IE9以上版本的IE浏览器上能够兼容, ...