1. 程式人生 > >map函式,java和C++的常見用法

map函式,java和C++的常見用法

map函式是一個很常用到的對映函式,他在演算法分析的時候有著舉足輕重的作用,他可以結果超大空間的問題,比如說需要開一個很大的陣列來表示一組關係,比如說要記錄下一個學生的學號和姓名,總共有10^9之多的學生,如果使用一維陣列是承受不了的,這個時候只能使用map函式,來記錄這麼龐大的陣列。

下邊先來看下c++的map函式的用法:

#include<map>
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n = 3;
/*map<int, string> a;


for (int i = 0; i < n; i++){//可以直接使用[]運算子來表示這一個關係,這個關係已經被過載過了的,不用擔心會用錯
a[i] ="123";
}

a[20]="456";
map<int, string>::iterator it;
for (it = a.begin(); it != a.end(); it++){
cout << it->first << ":" << it->second << endl;
}
0 123

1 123

2 123

3 123

20 456




*/

/////////////////////////////////////////////////////////////////////////////////////
/*map<char, int> b;


for (int i = 0; i < n; i++){
b[i+'0'] = i;
}

b[20+'0']=20;
map<char,int>::iterator it2;
for (it2 = b.begin(); it2 != b.end(); it2++){
cout << it2->first << ":" << it2->second << endl;
}

0 0

1 1

2 2

3 3

20 20




*/

/////////////////////////////////////////////////////////////////////////////////////




/*map<char, string>c;
for (int i = 0; i < n; i++){
c[i + '0'] = "wang";
}

c[20+'0']="wang";
map<char,string>::iterator it3;
for (it3 = c.begin(); it3 != c.end(); it3++){
cout << it3->first << ":" << it3->second << endl;
}

0 wang

1 wang

2 wang

3 wang

20 wang




*/

/////////////////////////////////////////////////////////////////////////////////////


return 0;
}


下邊來看java的map函式:

package Main;
import java.util.*;


import org.omg.PortableInterceptor.Interceptor;


import java.io.*;


class Main{
public static void cout(Object s) {
if(s instanceof Map){
//方法1,只輸出value一值,key並沒有,要得到key,需要用到迭代器,如方法二
//for(Object o:((Map) s).keySet()) {
//cout(((Map) s).get(o));
//}cout("");
//方法2
Iterator it=((Map) s).entrySet().iterator();
while(it.hasNext()) {
Map.Entry entry=(Map.Entry)(it.next());
cout(entry.getKey().toString()+":"+entry.getValue().toString());
}
return;
}
System.out.println(s);
}
public static void main(String args[]) {
Map map=new HashMap();
map.put(2, "123");
map.put(1, 4);
map.put('3', "456");//put函式是自動幫你排好序的,對應於key從小到大自動排序;
cout(map.get(2));cout("");
cout("----------------------");
cout(map);
cout("++++++++++++++++++++++");


map.clear();
cout(map);

cout("\\\\\\\\\\\\\\\\\\\\\\");
HashMap map1=new HashMap(); 
  map1.put("1", "A"); 
  HashMap map2 = new HashMap(); 
  map2.put("2", "B"); 
  map2.put("3", "C"); 
  map1.putAll(map2); 
  System.out.println(map1);
  //直接使用這樣的輸出就會是{1=A, 2=B, 3=C}
  //兩個map具有重複的key
  HashMap map3=new HashMap(); 
  map3.put("1", "A"); 
  HashMap map4 = new HashMap(); 
  map4.put("1", "B"); 
  map4.put("3", "C"); 
  map3.putAll(map4); //如果發現有相同的key就會覆蓋前邊的value;
  //當然這裡的put都會有自動從小到大排序;
  System.out.println(map3);
  
  cout("-----------------------------");
  Map<String, String > map5=new TreeMap<String,String>(
  new Comparator<String>() {
  public int compare(String a,String b) {
  return b.compareTo(a);//降序排序;
  }
  });
  for(int i=0;i<5;i++) {
  map5.put("2", "555");
  map5.put("5", "7777777");
  map5.put("4", "1");
  }//這裡的key是重複的,所以後來的都會被忽略掉的。
  cout(map5);cout("");
}
}

123


----------------------
1:4
2:123
3:456
++++++++++++++++++++++
\\\\\\\\\\\
{1=A, 2=B, 3=C}
{1=B, 3=C}
-----------------------------
5:7777777
4:1
2:555


相關推薦

map函式javaC++的常見用法

map函式是一個很常用到的對映函式,他在演算法分析的時候有著舉足輕重的作用,他可以結果超大空間的問題,比如說需要開一個很大的陣列來表示一組關係,比如說要記錄下一個學生的學號和姓名,總共有10^9之多的學生,如果使用一維陣列是承受不了的,這個時候只能使用map函式,來記錄這麼

round()函式javac/c++中的不同表現

首先,數學上負數四捨五入考慮的是絕對值四捨五入,然後加符號。 c/c++ round(-0.5)返回-1,round(-1.5)返回-2,是四捨五入沒錯, 用floor(-0.5+0.5)的話返回0。 而java Math.round(-0.5)返回0,原因:小數可拆成整數和正小

c/c++ java c# 誰是英雄 ?

而在網際網路方面,1999的資料顯示,有部分的程式設計師從windows轉移到linux下從事java,的電子商務反面的開發,使在windows下從事開發的程式比例,從65%下降到40%, 而從事web程式開發比例從,18%上升到40%。由於2000 微軟釋出.net,到現在為止在windows程式設計師比例

Android NDK(JNI)學習總結一:Java程式碼中申明native函式-Java呼叫C函式並在C函式中訪問java方法、屬性

本文不涉及android-ndk開發環境搭。 步驟一:新建一個APP,名稱為HelloJNI,然後定義一個類(將會在native程式碼中呼叫和訪問該類): package com.example.hellojni; public class JNITe

C++中的仿函式,std::functionbind()的用法

1.仿函式:又叫std::function,是C++中的一個模板類 2.C語言中的函式指標: int  add(int a,int b) {   return a+b; } typedef int (*func)(int,int);//給函式型別定義別名

PHP陣列XML相互轉換的函式微信中常見的Sign生成函式

//陣列轉Xml function ArrToXml($arr) { if(!is_array($arr) || count($arr) == 0) return ''; $xml = "<xml>"; foreach ($arr as $key=>$val) {

C++學習筆記(三)--函式引數陣列函式指標const,二維陣列函式遞迴函式指標

C++ Primer Plus學習筆記之三 每一塊寫了一個詳細闡釋的demo,具體使用方法以及注意事項在程式碼裡都有備註 第七章函式--C++的模組程式設計,總計分為以下幾塊-- 函式引數

執行時多型、編譯時多型過載、重寫的關係(不區分JavaC#保證能看懂!)

以前在大學學習OOP的時候,知道了過載和重寫的區別,但如果要把他們和多型聯絡起來,我想很多新手朋友和我當初一樣是死記的,可是時間長了,自然而然就忘記了,最近在寫測試的時候,終於“開竅”了。在這裡和大家分享一下。過載和重寫我就不解釋了,大家都知道,我現在主要是讓大家記住    

關於C++JavaPython中的隨機數生成法

首先我們來說說C++中的隨機數生成: 我們知道在C++用函式rand()獲取的是一個0 ~ RAND_MAX之間的一個隨機數。其中RAND_MAX的值為32767。 首先我們來分析兩個程式: #include <iostream> #include &l

常見的幾種排序演算法(javaC++版)(參考《演算法》)

博主這裡要講的幾種排序演算法包括(從難到易):1.氣泡排序(最low的演算法) 2.插入排序 3.希爾排序 4.歸併排序 5.快速排序 6.快速排序的三項切分 氣泡排序: (1)簡介:這是最原始,最簡單的排序,幾乎不需要額外的空間 (2)基本原理:通過迴圈將最大的元素移到

JAVAC++ 交換兩個變數的值的函式 區別

在程式開發的過程,要交換兩個變數的內容,是一種比較常見的事情。在排序演算法中,就有一種就叫做“交換排序法”。在所有的排序演算法,交換要排序的集合中的兩個元素,幾乎是必須的過程。在Java中交換兩個元素的內容,如果你是程式設計師新手,你可能碰到意想不到的問題。 眾所周知,

用CryptoJS 實現js端3des加密解密用openssl_encrypt實現php的3des加密解密相容javaC#c++等

       因為要開發社交平臺,涉及到聊天內容,這些敏感內容想用3des加密傳輸,百度了好多資料,測試了好多次,終於實現了功能,可以直接使用,這裡寫下來,希望幫助到其他朋友。      聽說微信小程式需要資料加密,相信這個能幫到大家。 這裡說一下,iv向量一般是8位

MD5加密(javac#)

service int print cnblogs return pan Coding pro pre java代碼 public static String md5(String str) { try { MessageDiges

JNI打通javac

div sys brush led and ftw orm doc ive 1、JNI簡介 The Java Native Interface (JNI) is a programming framework that enables Java code running i

201671010139 2016-2017-2 JAVA C語言的語法區別

tro 特點 建立 優點 cor ext 虛函數 ref strong   java和c語言的語法上有很多相似的地方,但也有很多不同。 一,在初始值的區別   在C語言中,是可以不初始化使用的   而在JAVA中,是必須初始化值的 二,在抽象方法或抽象類的區別   C語言的

【轉載】form表單的兩種提交方式submitbutton的用法

按鈕 type ssid login false tex .get ons 轉載 1.當輸入用戶名和密碼為空的時候,需要判斷。這時候就用到了校驗用戶名和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。方法一:在jsp的前端

編程之美—象棋將帥問題javaC++實現

象棋解決思路這樣如下圖:然後我的java實現public class xiangqi { public static void main(String[] args) { byte s=81; while(s!=0){ if((s/9%3)==(

JavaC++的區別

必須 java 增強 然而 開發 idt pac 結合 面向對象的語言 1.指針 JAVA語言讓編程者無法找到指針來直接訪問內存,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是

SM4加密算法實現JavaC#相互加密解密

.net ++ println ffffff 預處理 AS 思路 load prop SM4加密算法實現Java和C#相互加密解密 近期由於項目需要使用SM4對數據進行加密,然後傳給Java後臺,Java後臺使用的也是SM4的加密算法但是就是解密不正確,經過一步步調

C# 用XiliumCefGlue做瀏覽器JSC#相互調用

需要 更改 net 執行 關於 我的電腦 thread alt 添加 原文:C# 用XiliumCefGlue做瀏覽器,JS和C#相互調用 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.ne