原创 位運算實現乘法運算

在回答本問題之前,先學習一些有關位運算的知識。 (1) 常用的等式: -n=~(n-1)=~n+1 (2) 獲取整數n的二進制中最後一個1: n&~(n-1)或者n&(-n)。例如n=010100,則-n=101100,n&(-n)=00

原创 如何使用宏求結構體的內存偏移地址

#define OffSet(type,field) ((size_t)&(((type*)0)->field)) 在C語言中,ANSI C標準允許值爲0的常量被強制轉換成任何一種類型的指針,而且轉換結果是一個空指針,即NULL指針,因此

原创 GDB調試程序一(概述)

聲明:博客內容引用的是陳先生的博文,原文鏈接http://blog.csdn.net/haoel/article/details/2879。由於原博文沒有目錄,不方便查詢,所以特此把原博文整理成帶目錄版的。 GDB概述 ————

原创 Linux多線程編程小結

原文地址http://blog.csdn.net/monkey_d_meng/article/details/5628663 1.Linux進程與線程        Linux進程創建一個新線程時,線程將擁有自己的棧(因爲線程有自己的

原创 C++指針數組、數組指針、數組名及二維數組技巧彙總

這篇文章主要介紹了C++指針數組、數組指針、數組名及二維數組技巧彙總,對於深入理解C++數組與指針來說非常重要,需要的朋友可以參考下。 本文較爲詳細的分析了關於理解C++指針數組,數組指針,數組名,二維數組的一些技巧。是比較重要的概念,

原创 delete與delete [] 真正區別

我們通常從教科書上看到這樣的說明: delete 釋放new分配的單個對象指針指向的內存 delete[] 釋放new分配的對象數組指針指向的內存 那麼,按照教科書的理解,我們看下下面的代碼: int *a = new int[10];

原创 對容器元素重新排序的算法

假設我們要分析一組兒童故事中使用的單詞,例如想知道他們使用了多少個6個或者以上字母組成的單詞。每個單詞只統計一次,不考慮它出現的次數。 程序代碼如下: #include <vector> #include <iostream> #incl

原创 c++ 輸出虛函數表內容

class Base{ public: virtual void f(){cout<<"Base::f"<<endl;} virtual void g(){cout<<"Base::g"<<endl;} virtual vo

原创 C/C++ union用法

在C/C++程序的編寫中,當多個基本數據類型或複合數據結構要佔用同一片內存時,我們要使用聯合體;當多種類型,多個對象,多個事物只取其一時(我們姑且通俗地稱其爲“n 選1”),我們也 可以使用聯合體來發揮其長處。首先看一段代碼:<pre

原创 八皇后問題(C語言版本)

八皇后問題是一個古老而著名的問題,是回溯算法的典型例題。該問題是十九世紀著名的數學家高斯1850年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線(對角線)上,問有多少種擺法。

原创 Contains Duplicate II

Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array

原创 高效合併兩個有序數組(Merge Sorted Array)

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that

原创 c++ 單詞轉換 map對象

#include <map> #include <sstream> #include <fstream> #include <iostream> #include <string> #include <exception> using n

原创 高內聚低耦合

高內聚低耦合 內聚是從功能角度來度量模塊內的聯繫,一個好的內聚模塊應當恰好做一件事。它描述的是模塊內的功能聯繫。 耦合是軟件結構中各模塊之間相互連接的一種度量,耦合強弱取決於模塊間接口的複雜程度、進入或訪問一個模塊的點以及通過接口的數據

原创 atoi和itoa函數

#include <stdio.h> #include <stdlib.h> #include <string.h> int Myatoi(const char* str) { if(str==NULL)//判斷指針是否爲空 {