Time of Update: 2018-12-04
Map Map是STL的一個關聯容器,它提供一對一(其中第一個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在編程上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅/黑樹狀結構(一種非嚴格意義上的平衡二叉樹),這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的,後邊我們會見識到有序的好處。 1. map的建構函式 map<int,string>
Time of Update: 2018-12-04
以下是我在做java和c++ socket通訊過程中如何正確使用java接收函數的問題,主要還是為了完成項目,可能不夠詳細,請多多指正:1、c++端發送:如果發送的是整型等多位元組類型,必須先要經過大小端的轉換才可以發送,java端接收此種類型時用readInt、readFloat等函數,否則java端會出現亂碼;大小端代碼轉換如下:#define BSWAP_32(x) \(UINT32) ( (( ((UINT32)(x)) & 0xff000000 ) >> 24) |
Time of Update: 2018-12-04
對於函數的傳回值,看似簡單,但並非如此,比如:int func(int a);該函數會返回一個int型,如果進行一個調用int result=func(3);會發生什麼情況?首先,func將傳回值複製到一個匿名臨時變數中,在這裡假設該臨時變數為anony(其實是沒有名字的,這裡方便闡述);然後,再將anony的值複製到result,可以看出,這裡是進行了兩次複製的。而並非一次複製。 對於返回引用的函數:int & func(int
Time of Update: 2018-12-04
接收廣播訊息端:#include "stdafx.h"#include <iostream>#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib")const int MAX_BUF_LEN = 255;using namespace std;int _tmain(int argc, _TCHAR* argv[]){WORD wVersionRequested;WSADATA wsaData;int
Time of Update: 2018-12-04
昨天去筆試,做了兩個小時的題目,其中包括三個大部分,第一部分是c語言基礎,第二部分是代碼審查,就是給你一些程式片段,讓你指出哪一行會出錯,第三部分是網路基礎的題目,做的很差,要是有想去面試的,也可以自己複習一下,看看相關資料。自己也找了些資料,繼續學習,後續慢慢貼出來c語言考的比較細節,如果平時沒接觸的話不好做程式片段估計是他們公司自己的一些程式資料,那時候評審的時候出錯的問題,然後就被他們整理出來,考查面試者的能力,所以要去的可以準備準備,比如這個網址的一些資料,後面我再找點類似的題目:htt
Time of Update: 2018-12-04
之前在網上一直查不到關於把類打包成dll檔案的程式,今天自己寫了個測試程式,供大家參考一、產生類的dll檔案1.我是在vs2008上測試的,建立工程,在選擇建立何種類型的工程的時候,勾上application type中的dll;2.添加一個標頭檔,命名為mydll.h,這個標頭檔就是我們測試時候要用介面檔案,代碼如下:#ifndef _MYDLL_H_#define _MYDLL_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C"
Time of Update: 2018-12-04
轉自:http://blog.csdn.net/starlee/article/details/619827 我們知道,用C++開發的時候,用來做基類的類的解構函式一般都是虛函數。可是,為什麼要這樣做呢?下面用一個小例子來說明:
Time of Update: 2018-12-04
1.線程池基本原理 在傳統伺服器結構中, 常是 有一個總的 監聽線程監聽有沒有新的使用者串連伺服器, 每當有一個新的 使用者進入, 伺服器就開啟一個新的線程使用者處理這 個使用者的資料包。這個線程只服務於這個使用者 , 當 使用者與伺服器端關閉串連以後, 伺服器端銷毀這個線程。然而頻繁地開闢與銷毀線程極大地佔用了系統的資源。而且在大量使用者的情況下, 系統為了開闢和銷毀線程將浪費大量的時間和資源。線程池提供了一個解決外部大量使用者與伺服器有限資源的矛盾, 線程池和傳統的一個使用者對應一
Time of Update: 2018-12-04
在C語言中,結構體中變數的聲明順序不同會導致所佔位元組不同。例如,struct {short x;long y;char z;}A;上述結構體所佔位元組為12。struct {short x;char y;long
Time of Update: 2018-12-04
在C語言中,有時我們需要函數的傳回值為一個二維數組。這樣外部函數接收到這個傳回值之後,可以把接收到的二維數組當成矩陣操作(外部函數不可用普通的一級指標接收傳回值,這樣的話,外部函數將不知道它具有二維性)。方法如下:法1.沒有使用typedef類型定義#include <stdio.h>int (*fun(int b[][2]))[2]{return b;}int main(){int i,j;int a[2][2]={1,2,5,6};int (*c)[2];c =
Time of Update: 2018-12-04
前面寫過一篇關於C/C++左值的文章(http://blog.csdn.net/love_cppandc/article/details/7782606),那篇文章裡提到過i++與++i的區別,但是只是在i為整型時的一些情況。現在,我們討論一下當指標++與*混用的一些情況。1. (i) char *ptr = "Hello"; printf("%c",*ptr++);結果為 H。 (ii) char *ptr = "Hello";
Time of Update: 2018-12-04
本文討論在C/C++中,一維數組和二維數組中的地址位移問題。一維數組 int a[3];二維數組 int a[3][3];1、先看一維數組的情況:#include <iostream>using namespace std;int main(){int a[3] = {1,2,3};cout << &a << endl;cout << a << endl;cout << &a[0] <<
Time of Update: 2018-12-04
在標準C++中,++i可以作為左值,i++不能作為左值。1.++i相當於i自身增1,然後返回i的引用,i是普通變數,所有可以作為左值。 ++i實現 i = i + 1; return i;2.i++相當於將i賦值給編譯器產生的臨時變數,然後i自身增1,返回臨時變數。由於臨時變數不能作為左值,故i++不能為左值。 i++實現 int temp; temp = i; i = i + 1; return temp;另外,在gcc當中,無論是i++還是++i都不能作為左值,編譯通不過。
Time of Update: 2018-12-04
如果想要交換2個變數,一般的做法是引入第三個變數,例如, temp = a; a = b; b= temp;這樣2個變數中的值就實現了交換。那能不能不引入其他變數就可以實現變數值的交換呢?答案是肯定的。用異或操作可以實現,有2種實現方法,本質上是一樣的。法1:#include <stdio.h>int main(){int a,b;while(1){scanf("%d %d",&a,&b);a = a^b;
Time of Update: 2018-12-04
純虛函數是C++中很重要的一塊,如果你碰到這個問題了,我建議你好好到看看。先去查下概念,懂得虛函數是幹嘛的,然後自己試著寫段代碼測試下。貼出自己測試到一段代碼,很簡單,幫忙理清思路。#include <iostream>using namespace std;class Parent{
Time of Update: 2018-12-04
語言的設計並不是純粹的思維訓練,而是一種在需要、想法技術和約束條件之間取得平衡的非常實際的修鍊,一個好語言不是設計出來的,而是成長起來的。物件導向的程式設計是利用繼承機制的程式設計。資料抽象是使用使用者定義型別的程式設計。除少數例外,物件導向的程式將能夠且應該支援資料抽象資料抽象從本質上需要在語言特徵的形式上得到支援。物件導向的程式設計更進一步需要得到程式設計環境的支援。學習C++最根本的是學習編程和設計的技術。把注意力集中在細節上,很容易頭混腦漲,以至於用不好語言。學習C++時,應該牢記關鍵性
Time of Update: 2018-12-04
EmguCV是OpenCV在C#環境下的封裝,使用起來很方便。下面是我搜集的幾個有用的網址,貼出來分享給大家,可以在剛開始的時候參考下:首先是EmguCV的官網:http://www.emgu.com/wiki/index.php/Main_Page,下載和文檔都在這裡。下載的時候選好版本,不同版本是對不同版本的OpenCV進行的封裝,OpenCV2.0以後的組織圖有點變換,這要注意點。 其次是收集的別人的文章: 豆丁網:詳解C#下配置OPENCV http://www.docin.com/p-
Time of Update: 2018-12-04
這裡有各種色彩空間的轉碼實現C++版本:http://www.easyrgb.com/index.php?X=MATH&H=20#texRGB2HSV:var_R = ( R / 255 ) //RGB from 0 to 255var_G = ( G / 255 )var_B = ( B / 255 )var_Min = min( var_R, var_G, var_B ) //Min. value of RGBvar_Max = max(
Time of Update: 2018-12-04
"Designing Qt-Style C++ APIs" by Matthias Ettrich http://doc.trolltech.com/qq/qq13-apis.html 翻譯這篇文章的目的不是讓人瞭解Qt,而是讓人試著學習點C++編程的軟技能。我從原文中得到的一些風格上的體會,也希望你能從中有所收穫.(譯者注) 我們在Trolltech做了大量研究來改進Qt開發體驗.在這篇文章中,我將分享我們的一些成果,呈現我們在進行Qt
Time of Update: 2018-12-04
網上沒看到C#的一致性雜湊的實現,所以這裡提供一份。同樣的代碼也在:http://code.google.com/p/consistent-hash/source code:using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Security.Cryptography;using