奇技淫巧C++之懶惰計算

考慮這樣一個運算式語句:String result = str_you + “said: ” + str_he + “ said: @#$% ” + str_i + “said: over!”;對於這樣一個語句,程式如何求值呢?假設str_you是一個典型std::string類型,這個語句需要做5 次operator+運算,多個string臨時對象,還極有可能的,多次的記憶體配置操作。如果你的team

用C++ Builder建立資料庫VCL使用經驗

隨著資料庫的廣泛應用,資料庫編程已經成為程式設計中發展迅猛的一支。C++

使用c#產生高品質小空間的縮圖

.Net內建的產生縮圖的方法是Bitmap.GetThumbnailImage這個方法產生的縮圖不夠清 晰,一般我們會使用Graphics高品質插值發產生清晰的縮圖,這時候大小會不盡人意,怎 麼辦?我們可以使用jpeg壓縮的方法壓縮一下圖片,這樣圖片的大小會縮小到壓縮前的十分 之一。下面是完成這項工作的代碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.

資料結構學習(C++)之排序

測試程式後面的常式,都是對數組的排序,使用靜態鏈表的也適用於鏈表的排序。為簡單起見,只對單關鍵碼排序,並且最後的結果都是從頭到尾按升序排列。下面是統一的測試程式:#include <iostream>#include <iomanip>using namespace std;#include <stdlib.h>#include <time.h>#include <math.h>#include

資料結構學習(C++)之遞迴

看過這樣一道題,問,“程式結構化設計的三種基礎結構,順序、選擇、迴圈是不是必須的?”當然,你知道這樣一個論斷,只要有這三種就足夠了;但是能不能更少呢?答案是“可以”,原因就是遞迴能取代迴圈的作用,例如下面的對一個數組裡面元素求和的函數:float rsum (float a[], const int n){if (n <= 0) return 0;else return rsum(a, n – 1) + a[n – 1

More Effective C++之考慮變更程式庫

程式庫的設計就是一個折衷的過程。理想的程式庫應該是短小的、快速的、強大的、靈活的、可擴充的、直觀的、普遍適用的、具有良好的支援、沒有使用約束、沒有錯誤的。這也是不存在的。為尺寸和速度而進行最佳化的程式庫一般不能被移植。具有大量功能的的程式庫不會具有直觀性。沒有錯誤的程式庫在使用範圍上會有限制。真實的世界裡,你不能擁有每一件東西,總得有付出。不同的設計者給這些條件賦予了不同的優先順序。他們從而在設計中犧牲了不同的東西。因此一般兩個提供相同功能的程式庫卻有著完全不同的效能特徵。例如,考慮iostre

C++語言代碼檢查工具PC-Lint四步速成

概述PC-Lint是一個曆史悠久,功能異常強勁的靜態代碼偵查工具。它的使用曆史可以追溯到電腦編程的遠古時代(30多年以前)。經過這麼多年的發展,它不但能夠監測出許多文法邏輯上的隱患,而且也能夠有效地幫你提出許多程式在空間利用、運行效率上的改進點,在很多專業級的軟體公司,比如Microsoft,

瞭解C++異常處理的系統開支

為了在運行時處理異常,程式要記錄大量的資訊。無論執行到什麼地方,程式都必須能夠識別出如果在此處拋出異常的話,將要被釋放哪一個對象;程式必須知道每一個進入點,以便從try塊中退出;對於每一個try塊,他們都必須跟蹤與其相關的catch子句以及這些catch子句能夠捕獲的異常類型。這種資訊的記錄不是沒有代價的。確保程式滿足異常規格不需要運行時的比較(runtime

Win32下兩種用於C++的線程同步類(上)

線程同步是多線程程式設計的核心內容,它的目的是正確處理多線程並發時的各種問題,例如線程的等待、多個線程訪問同一資料時的互斥,防死結等。Win32提供多種核心對象和手段用於線程同步,如互斥量、訊號量、事件、臨界區等。所不同的是,互斥量、訊號量、事件都是Windows的核心對象,當程式對這些對象進行控制時會自動轉換到核心態,而臨界區本身不是核心對象,它是工作在使用者態的。我們知道從使用者態轉換到核心態是需要以時間為代價的,所以如果能在使用者態就簡單解決的問題,就可以不必勞煩核心態了。這裡我要說的是兩

Win32下兩種用於C++的線程同步類(下)

上一篇中我介紹了一種通過封閉Critical

在Rational中使用C++可視化

IBM ®Rational®Systems Developer 的 C++ 可視化(C++ Visualization)特效能夠讓您使用 C++ 代碼,利用一個類似 UML 的符號提供與 UML 建模相似的技巧。這篇文章展示了如何圖形化地表示(顯示) C++ 原理,發現並顯示它們在 UML 圖中的關係,建立新的 C++ 組件,直接從圖中編輯原始碼,建立關聯和導航特性。C++ 可視化特性的介紹IBM®Rational®Systems Developer C++

C++箴言:謹慎使用多繼承

觸及 multiple inheritance (MI)(多繼承)的時候,C++ 社區就會鮮明地分裂為兩個基本的陣營。一個陣營認為如果 single inheritance (SI)(單繼承)是有好處的,multiple inheritance(多繼承)一定更有好處。另一個陣營認為 single inheritance(單繼承)有好處,但是多繼承引起的麻煩使它得不償失。在本文中,我們的主要目的是理解在 MI 問題上的這兩種看法。首要的事情之一是要承認當將 MI

C++物件版面配置及多態實現探索之虛繼承

下面我們來看虛繼承。首先看看這C020類,它從C010虛繼承:}struct C010{ C010() : c_(0x01) {} void foo() { c_ = 0x02; } char c_;};struct C020 : public virtual C010{ C020() : c_(0x02) {} char c_;};運行如下代碼,查看對象的記憶體布局:PRINT_SIZE_DETAIL(C020)結果為:The size of C020 is 6The detail of C0

C#簡單操作Lotus Notes郵件

前段時間簡單的研究了一下.NET操作Lotus Notes郵件的實現,具體的操作包括郵件的讀取和發送,而且都要包含附件,其間參考了《在 Microsoft .NET 應用程式中使用 IBM Lotus Domino》一文,現在把成果和大家分享一下。本文將分為擷取使用者列表、發送郵件、收取郵件三個部分,並會在文末提供範常式序(Visual Studio 2008)的下載。引用如果想使用.NET操作Lotus,我們可以使用 Lotus Domino Objects 通過 COM 來訪問

More Effective C++:指標與引用的區別

指標與引用看上去完全不同(指標用操作符’*’和’->’,引用使用操作符’.’),但是它們似乎有相同的功能。指標與引用都是讓你間接引用其他對象。你如何決定在什麼時候使用指標,在什麼時候使用引用呢?首先,要認識到在任何情況下都不能用指向空值的引用。一個引用必須總是指向某些對象。因此如果你使用一個變數並讓它指向一個對象,但是該變數在某些時候也可能不指向任何對象,這時你應該把變數聲明為指標,因為這樣你可以賦空值給該變數。相反,

More Effective C++:不使用多態性數組

類繼承的最重要的特性是你可以通過基類指標或引用來操作衍生類別。這樣的指標或引用具有行為的多態性,就好像它們同時具有多種形態。C++允許你通過基類指標和引用來操作衍生類別數組。不過這根本就不是一個特性,因為這樣的代碼根本無法如你所願地那樣運行。假設你有一個類BST(比如是搜尋樹對象)和繼承自BST類的衍生類別BalancedBST:class BST { ... };class BalancedBST: public BST { ...

菜鳥也能搞定C++記憶體流失

背景C++記憶體配置與釋放均由使用者代碼自行控制,靈活的機制有如潘多拉之盒,即讓程式員有了更廣的發揮空間,也產生了代代相傳的記憶體流失問題。對於新手來說,最常犯的錯誤就是new出一個對象而忘記釋放,對於一般小應用程式來說,一點記憶體空間不算什麼。但是當記憶體流失問題出現在需要24小時啟動並執行平台類程式上的時候,將會使系統可用記憶體飛速減少,最後耗盡系統資源,導致系統崩潰。所以學會如何防止並檢查記憶體流失,是一個合格的c++程式員必須具備的能力。但是由於記憶體流失是程式運行並滿足一定條件時才會發

C#進行Visio二次開發之判斷圖紙是否有裝置

判斷Visio圖紙上是否圖紙有裝置(存在圖元), 有兩種方法,一種是通過Window對象的SelectAll方法,在判斷選擇的集合是否不為空白即可,如下:/**//// <summary> /// 判斷是否有對象選定 /// </summary> /// <param name="window"></param> ///

C++之父Bjarne談C++中的STL模板

在1994年,我主要關心的是如何使ISO

保持C/C++程式碼的延展性

   在今天,已有許多的32位應用程式感到,在32位平台上可用的虛擬記憶體受到了一定的限制,對程式開發人員來說,即使是開始關注64位平台時,也不得不維護軟體的32位版本,這就需要一種方法,以使代碼的兩個版本都保持相當的延展性。  

總頁數: 4314 1 .... 580 581 582 583 584 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.