Time of Update: 2018-12-03
這個問題應該是我以前在CSDN蹭分時回答次數比較多的一個問題了,我的回答一般是三種方法:(1)用vector的vector,(2)先分配一個指標 數組,然後讓裡面每一個指標再指向一個數組,這個做法的好處是訪問數組元素時比較直觀,可以用a[x][y]這樣的寫法,缺點是它相當於C#中的一個鋸齒 數組,記憶體空間不連續。(3)直接分配一個x*y大小的一維數組,這樣保證空間是連續的,但訪問數組元素不直觀。對於我這個“經典”回答,我那時還一直是 挺得意的,至少從蹭分的角度來看,這樣回答還是很有效。
Time of Update: 2018-12-03
在我的那篇“C++中虛解構函式的作用”中我說明了為什麼作為基類的類的解構函式必須是虛函數,同時也指出:為了避免產生虛函數表,如果類不是基類的話,解構函式就不需要聲明為虛函數。 但是,我們不能預料使用者的行為,你不敢肯定使用者是否會從你的類去派生自己的類。如果使用者以一個基類指標去刪除一個衍生類別的對象,就會發生衍生類別的解構函式不被調用的情況。這樣做的危險性我想大家都知道。當然,你可以在類的說明文檔中,甚至是在類的標頭檔中,說明你寫的類不能作為基類。可是,誰又能保證,使用者會仔細閱讀這些
Time of Update: 2018-12-03
如何用C++編程獲得某台機器的IP地址?編譯:Northtibet下載原始碼 對於這個古老的問題,VC知識庫的精華區以及以往的線上雜誌中都有詳盡不一的描述。本文提供的方法是一個比較完整的解決方案,並附有詳細的實現細節。希望大家對這個問題有徹底的認識。其實,如果你熟悉 Windows 的Sockets
Time of Update: 2018-12-03
C++ new用法的正確方法應該如何操作?在這篇文章中我們將會根據其兩種不同的含義分別介紹一下它的影音方法,希望能給大家帶來一些協助。C++程式設計語言中有一種叫做new的術語。不過這一概念是比較模糊的,有些人把它理解為new函數,但是有的人又會把它理解為new運算子。那麼它的真正含義又是如何的呢?在這裡我們將會通過對C++ new用法的介紹,協助大家一起分析一下。 C++ new用法之一 new運算子最常用的是作為運算子的new,比如:string *str = new
Time of Update: 2018-12-03
標準串的:/********************************************the tokenize function for std::string*********************************************/#include <string>#include <vector>#include <iostream>using namespace std;typedef
Time of Update: 2018-12-03
(1) Java有記憶體回收機制,當然也就沒有C++的解構函式。但是,可控制性和C++相比就差了一點,而且也不是說有了記憶體回收,就不會產生記憶體流失。由於相互引用等原因可能造成對象的生存周期過長,記憶體回收失效。對象記憶體的回收,個人認為應該是由程式員來掌握的事情。C++可以用auto_ptr,shared_ptr等智能指標來完成自動析構,當然前提是你要熟悉他們的實現機制和應用場合(2) Java中所有的對象都是分配在堆上,在Java中只有控制代碼,也就是引用,沒有指標。
Time of Update: 2018-12-03
(1) vtable的影響 導致一個對象執行個體增大4個位元組 #include <cstdlib> #include <iostream> using namespace std; class A { int a; }; class B { virtual void say() { } int b; }; int main(int argc, char *argv[]) {
Time of Update: 2018-12-03
舞伴問題描述如下:就是說有個PARTY舞會需要進行跳舞,當然是男的跟女的搭檔了。就是男的一個隊列,女的一個隊列,然後互相出隊列,進行匹配跳舞,如果男的隊列跟女的隊列人一樣多,則輸出 匹配完美結束,若最後男的剩下或者女的剩下,此時輸出剩下的隊列中第一個人的名字,比如I,則輸出
Time of Update: 2018-12-03
C++匯出模板類今天使用__declspec(dllexport)匯出dll中的模板類,dll倒是編譯通過了,不過連結的時候出錯,無法解析的外部符號,汗到網上查了下,說是模板類無法匯出然後我去掉了__declspec(dllexport),發現竟然編輯通過了,也就是不用匯出聲明就可以在dll外部使用模板類了測試了一下,這樣使用沒有出錯,正常使用奇怪了,為什麼呢?另:C++模板類必須是實現和定義都放標頭檔中,否則會出現連結錯誤
Time of Update: 2018-12-03
最近在看JAVA,因為JAVA是運行期綁定,所以裡面提到了一個有趣的問題,就是在建構函式裡面運行虛函數的問題。 建構函式裡可以運行虛函數嗎?我們先不討論實際項目中是否有這個必要(至少我還沒碰到過,也許即便碰到了也有其他的解決辦法。),單就建構函式裡調用虛擬函數的情況來做些分析。 在JAVA中,如果在建構函式中調用虛擬函數的話,是可以編譯通過的,也不會出現運行期錯誤,但他的運行結果也許不是你想要的。在JAVA當中,由於是運行期綁定,而建構函式執行的虛擬函數將是衍生類中的函數(假如衍生類對該虛擬函數
Time of Update: 2018-12-03
平常做程式的時候我們經常會遇到這樣的情況,本來直接輸入的是這樣的資料,然而在讀取輸出的時候卻不是我們輸入時的資料。這是為什麼呢? 原因就是我們在輸入的時候留下了垃圾,而我們定義的某個變數接受的資料正是“垃圾”而不是我們想要的資料。沒事總結一下C、C++中清除垃圾的方法(花了我一上午的時間啊,不過感覺很有必要):C語言中緩衝區的重新整理:(清除輸入時的垃圾)1.fflush(stdin) 標頭檔: include<stdio.h>
Time of Update: 2018-12-03
和大多數朋友一樣,我頭一遭遇到cout是在生平第一個看到C++程式——經典的“Hello, World!”中,作為我如今最擅長編寫的程式之一(^_^),它大概是這樣子的:#include <iostream>using namespace std;int main(){ cout << "Hello, World!" << endl; return 0;}
Time of Update: 2018-12-03
今天在一個網站上看到有個冒泡排序演算法,最後的輸出prinf輸出函數如:printf("%c",a[i],a[i]); 突然記得在什麼地方看過一種說法,C語言的輸出是從右至左的,但具體卻很模糊,下班回來之後就試了一下,代碼如下:#include <stdio.h>int main(){ int b = 4;printf("%d,%d",++b,b++);printf("\n");printf("%d",b);printf("\n");int a[3] = {1,2,
Time of Update: 2018-12-03
[HttpPost] public string UploadImage() { //string ss = Request.Form["uploadFile"]; //return ss; HttpPostedFileBase uploadFile = Request.Files[0]; string fileName = uploadFile.FileName;
Time of Update: 2018-12-03
Visual C++.NET涉及到ATL/ATL Server、MFC和託管C++等多種編程方式,不僅功能強大而且應用廣泛。在編程中,我們常常會遇到ANSI、Unicode以及BSTR不同編碼類別型的字串轉換操作。本文先介紹基底字元串類型,然後說明相關的類,如CComBSTR、_bstr_t、CStringT等,最後討論它們的轉換方法,其中還包括使用最新ATL7.0的轉換類和宏,如CA2CT、CA2TEX等。 一、BSTR、LPSTR和LPWSTR 在Visual
Time of Update: 2018-12-03
寫給C語言初學者的話 --www.chinaunix.net(ldap) 前些天我寫了一篇“Unix C語言值得注意的地方”一貼,回貼中談到學習國外的開源軟體中的高品質代碼的問題,但是有朋友跟我說,在看代碼的過程中感覺難度很大,想想也是如此,動輒十幾萬行的程式如果沒有人指點的話是很難找到切入點的,所以我撰寫了此文希望能對廣大C語言愛好者有所協助,在文章中有很多煽情的地方還請大家原諒,因為這篇文章使我想到了剛剛畢業的時候,所以有點感慨。同時文章中還有一些個人偏見存在,希望持反方向意見的人多多包涵,
Time of Update: 2018-12-03
在Linux的核心代碼中,多處都用到物件導向的設計理念,比如,在檔案系統系統的設計中,有四個主要的對象:超級塊,索引節點,目錄項和檔案。在每個對象定義的結構體,都有一個指向指向對象操作的結構體,在這個結構體中的所有欄位都是指向函數的指標,例如file結構中的縮減定義: struct file { struct file_operations *f_op; /*指向檔案動作表的指標*/ mode_t f_mode; /*檔案的開啟模式*/
Time of Update: 2018-12-03
/// <summary> /// 同步寄送電子郵件 /// </summary> /// <param name="fromEmail">發送方電子郵件</param> /// <param name="fromPwd">發送方電子郵件密碼</param> /// <param
Time of Update: 2018-12-03
static string GetPublicIpAdress() { string uri ="http://city.ip138.com/city0.asp"; WebRequest req = WebRequest.Create(uri); WebResponse res = req.GetResponse(); Stream sm = res.GetResponseStream();
Time of Update: 2018-12-03
多年前寫的時鐘控制項,發布出來,供大家參考。先看效果:首先,製作一個從UserControl繼承的時鐘控制項,使用雙緩衝繪製。由於是幾年前的水平,一些代碼寫到了屬性中,也懶得再改了,感興趣的,可以改得更規範些。//ClockControl.csusing System;using System.Drawing;using System.Drawing.Drawing2D;using System.Windows.Forms;namespace