一个数组保存了N个结构,每个结构保存了一个坐标,结构间的坐标都不相同,请问如何找到指定坐标的结构(除了遍历整个数组,是否有更好的办法)?
#include <iostream>
#include <map>
using namespace std;
#define N 5
typedef struct pointer {
int x;
int y;
//map对插入元素自动排序,使用时必须重写结构体的<操作函数
bool operator<(pointer const& p) const {
if (x < p.x) {
return true;
} else if (x > p.x) {
return false;
}
return y < p.y;
}
} Pointer;
void init(Pointer* pointers, int len, map<Pointer, int>& pointMap) {
for (int i = 0; i < len; ++i) {
pointMap.insert(pair<Pointer, int>(pointers[i], i));
}
}
void readAll(Pointer* pointers, int len, map<Pointer, int> pointMap) {
for (int i = 0; i < len; ++i) {
//用结构体查找,注意查找语法
map<Pointer, int>::iterator pointer = pointMap.find(pointers[i]);
if (pointer != pointMap.end()) {
cout << "( " << pointer->first.x << " , " << pointer->first.y
<< " )" << " index: " << pointer->second << endl;
}
}
}
bool findPointer(map<Pointer, int> pointMap, int len, Pointer pointer,
Pointer &result) {
map<Pointer, int>::iterator iter = pointMap.find(pointer);
if (iter != pointMap.end()) {
cout << "( " << iter->first.x << " , " << iter->first.y << " )"
<< " index: " << iter->second << endl;
result = iter->first;
return true;
}
return false;
}
int main() {
Pointer pointers[] = { { 1, 2 }, { 2, 4 }, { 4, 4 }, { 1, 5 }, { 2, 7 }, {
9, 9 }, { 3, 5 }, { 3, 4 } };
map<Pointer, int> pointMap;
int len = sizeof(pointers) / sizeof(Pointer);
init(pointers, len, pointMap);
readAll(pointers, len, pointMap);
Pointer result;
if (findPointer(pointMap, len, pointers[2], result)) {
cout << "result: " << "( " << result.x << " , " << result.y << " )"
<< endl;
}
return 0;
}
一个数组保存了N个结构,每个结构保存了一个坐标,结构间的坐标都不相同,请问如何找到指定坐标的结构(除了遍历整个数组,是否有更好的办法)?的更多相关文章
- SQL Server 修改表结构后无法保存的老问题
在修改表结构后无法保存,这是每次重装SQL Server后都会遇到的问题,好记性不如烂笔头,在这里记一下吧. 保存修改了的表结构时会提示“不允许保存更改.您所做的更改要求删除并重新创建以下表.您对无法 ...
- php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()
在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...
- matlab结构体形式保存数据生成.mat文件< 转>
2015年 参加天池大数据竞赛 为了建立模型,打算基于matlab使用Random Forest Algorithm的工具包 该工具包我在此分享给大家,http://yunpan.cn/cVX ...
- 将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件
将String类型的二维数组中的元素用FileOutputStream的write方法生成一个文件import java.io.File;import java.io.FileOutputStre ...
- php递归实现一维数组转为指定树状结构 --- 省市区处理
### 这两天脑壳痛,一时短路,想不到准备利用递归实现这个需求,最后还是要请教同事,回来自己在实现了一遍,并记录下来 ### 原数据: // { // 广东省: { // 广州市: [ // &quo ...
- Vuex form表单处理, 比官网更好的办法
Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...
- sql 从一个库中取某个表的数据导入到另一个库中相同结构的表中
sql 2008 从一个库中把 某个表中的数据导入到另一个库中的具有相同结构的表中 use 库1 go insert into 库1.dbo.表1 select * from 库2.dbo.表1 ...
- Tomcat目录结构及Tomcat Server处理一个http请求的过程
http://blog.sina.com.cn/s/blog_62cb15980101jh9x.html 1.Tomcat的结构概述 Tomcat服务器是由一系列可配置的组件构成,其核心组件是 ...
- #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个key的值
#!/usr/bin/env python #有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66值保存至字典的一个key中,将小于66的值保存至大二个ke ...
随机推荐
- Java四种线程池的学习与总结
在Java开发中,有时遇到多线程的开发时,直接使用Thread操作,对程序的性能和维护上都是一个问题,使用Java提供的线程池来操作可以很好的解决问题. 一.new Thread的弊端 执行一个异步任 ...
- [LeetCode] Split Concatenated Strings 分割串联字符串
Given a list of strings, you could concatenate these strings together into a loop, where for each st ...
- SpringIOC学习三
基于注解的注入:就是用注解标签的方式替换掉我们xml配置文件里面bean的注册和依赖关系的描述 a:首先回顾IOC(控制反转),进行依赖注入需要做到两件事情: 1:注册类 2:描 ...
- [Luogu 2816]宋荣子搭积木
Description saruka非常喜欢搭积木,他一共有n块积木.而且saruka的积木很特殊,只能一块块的竖着摞,可以摞很多列.说过saruka的是特殊的积木了,这些积木都非常智能,第i块积木有 ...
- [JLOI 2011]飞行路线&[USACO 09FEB]Revamping Trails
Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并 ...
- [PA 2014]Kuglarz
Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,…,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费c_ij元,魔术师就会告诉你杯子i,i+ ...
- ●BZOJ 1855 [Scoi2010]股票交易
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1855 题解: DP,单调队列优化.(好久没做 DP题,居然还意外地想出来了) 定义 dp[i ...
- HDU 5506(GT and set)
题意: 表示看了很久,然而发现还是没看懂题. 正解:给你a个集合,让你把他们合并成k个,当两个集合有公共数字时可以合并. (一直以为是合并后,每个集合至少有两个数字相同- -,这英语也是醉了) 思路: ...
- Unix文件系统的主要特点是什么?
1. 树型层次结构 2. 可安装拆卸的文件系统 3. 文件是无结构的字符流式文件 4. Unix文件系统吧外部设备和文件目录作为文件处理
- C#+HtmlAgilityPack+Dapper走一波爬虫
最近因为公司业务需要,又有机会撸winform了,这次的需求是因为公司有项目申报的这块业务,项目申报前期需要关注政府发布的相关动态信息,政府部门网站过多,人工需要一个一个网站去浏览和查阅,有时候还会遗 ...