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函式,java和C++的常見用法
map函式是一個很常用到的對映函式,他在演算法分析的時候有著舉足輕重的作用,他可以結果超大空間的問題,比如說需要開一個很大的陣列來表示一組關係,比如說要記錄下一個學生的學號和姓名,總共有10^9之多的學生,如果使用一維陣列是承受不了的,這個時候只能使用map函式,來記錄這麼
round()函式在java和c/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::function和bind()的用法
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++的模組程式設計,總計分為以下幾塊-- 函式引數
執行時多型、編譯時多型和過載、重寫的關係(不區分Java和C#,保證能看懂!)
以前在大學學習OOP的時候,知道了過載和重寫的區別,但如果要把他們和多型聯絡起來,我想很多新手朋友和我當初一樣是死記的,可是時間長了,自然而然就忘記了,最近在寫測試的時候,終於“開竅”了。在這裡和大家分享一下。過載和重寫我就不解釋了,大家都知道,我現在主要是讓大家記住
關於C++,Java和Python中的隨機數生成法
首先我們來說說C++中的隨機數生成: 我們知道在C++用函式rand()獲取的是一個0 ~ RAND_MAX之間的一個隨機數。其中RAND_MAX的值為32767。 首先我們來分析兩個程式: #include <iostream> #include &l
常見的幾種排序演算法(java和C++版)(參考《演算法》)
博主這裡要講的幾種排序演算法包括(從難到易):1.氣泡排序(最low的演算法) 2.插入排序 3.希爾排序 4.歸併排序 5.快速排序 6.快速排序的三項切分 氣泡排序: (1)簡介:這是最原始,最簡單的排序,幾乎不需要額外的空間 (2)基本原理:通過迴圈將最大的元素移到
JAVA和C++ 交換兩個變數的值的函式 區別
在程式開發的過程,要交換兩個變數的內容,是一種比較常見的事情。在排序演算法中,就有一種就叫做“交換排序法”。在所有的排序演算法,交換要排序的集合中的兩個元素,幾乎是必須的過程。在Java中交換兩個元素的內容,如果你是程式設計師新手,你可能碰到意想不到的問題。 眾所周知,
用CryptoJS 實現js端3des加密和解密,用openssl_encrypt實現php的3des加密解密,相容java和C#和c++等
因為要開發社交平臺,涉及到聊天內容,這些敏感內容想用3des加密傳輸,百度了好多資料,測試了好多次,終於實現了功能,可以直接使用,這裡寫下來,希望幫助到其他朋友。 聽說微信小程式需要資料加密,相信這個能幫到大家。 這裡說一下,iv向量一般是8位
MD5加密(java和c#)
service int print cnblogs return pan Coding pro pre java代碼 public static String md5(String str) { try { MessageDiges
JNI打通java和c
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表單的兩種提交方式,submit和button的用法
按鈕 type ssid login false tex .get ons 轉載 1.當輸入用戶名和密碼為空的時候,需要判斷。這時候就用到了校驗用戶名和密碼,這個需要在jsp的前端頁面寫;有兩種方法,一種是用submit提交。一種是用button提交。方法一:在jsp的前端
編程之美—象棋將帥問題java和C++實現
象棋解決思路這樣如下圖:然後我的java實現public class xiangqi { public static void main(String[] args) { byte s=81; while(s!=0){ if((s/9%3)==(
Java和C++的區別
必須 java 增強 然而 開發 idt pac 結合 面向對象的語言 1.指針 JAVA語言讓編程者無法找到指針來直接訪問內存,並且增添了自動的內存管理功能,從而有效地防止了c/c++語言中指針操作失誤,如野指針所造成的系統崩潰。但也不是說JAVA沒有指針,虛擬機內部還是
SM4加密算法實現Java和C#相互加密解密
.net ++ println ffffff 預處理 AS 思路 load prop SM4加密算法實現Java和C#相互加密解密 近期由於項目需要使用SM4對數據進行加密,然後傳給Java後臺,Java後臺使用的也是SM4的加密算法但是就是解密不正確,經過一步步調
C# 用XiliumCefGlue做瀏覽器,JS和C#相互調用
需要 更改 net 執行 關於 我的電腦 thread alt 添加 原文:C# 用XiliumCefGlue做瀏覽器,JS和C#相互調用 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.ne