C++ map以class為key的編譯錯誤和解決辦法

class Concept{ public: string name;};map<Concept, int> conceptCount;conceptCount[i.c]++;編譯錯誤:/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_function.h: In member function ‘bool

Effective C++ (一)

 條款1:盡量用const和inline而不用#define盡量用編譯器而不用預先處理常量的代碼在編譯時間報錯,就會很令人費解。因為報錯的是常量。代替函數調用的宏會有很多問題。如:#define max(a,b) ((a) > (b) ? (a) : (b))

移動開發C/C++

這麼多種手機作業系統,究竟哪種支援C/C++開發的應用程式呢,都該用什麼開發工具呢 說起來問題起因比較簡單,同事 作J2ME開發,想多手機上讀取手機卡資訊,可是找不到開發介面。想到C/C++的開發包可能提供了這樣的介面,把問題推給了我我雖然是做C/C++開發的,可我以前都是作的Windows下的開發呀,手機作業系統一點不了,也不知對應各種手機OS,從何處著手找相應的開發工具,開發包和開發文檔啊?

Pro*C編程初步 + 栽在了一個非常簡單的問題上

搞了好長時間,總算編譯過去了…… Pro*C程式好像就是用C語言來操作ORACLE資料庫的程式(有待考證;-) )Pro*C程式一般是以pc為尾碼的,ORACLE也提供了先行編譯程式,可以將這些SQL語句之類的都先行編譯成C或C++程式,然後再編譯相應的C/C++程式,產生可執行檔 要將pc編譯成cpp檔案,要使用proc程式:它的命令用法如下:proc iname=filename [Option_name1=vatue1

Pro*C簡單範例程式碼

下面的代碼就是實現了串連資料庫,然後做一些操作我的資料庫表名為ym_test,僅有兩個欄位,int型的I,還有char *型的dbop.pc檔案#include <stdio.h> #include <stdlib.h> #include <string.h> #include "dbop.h"

Effective C++補充

如果函數返回指標,則要小心了,最好要將其變為智能指標比如 int* ->shared_ptr<int>,並且在函數內部還可以改智能指標的刪除器。即當引用計數為0時的舉動,能夠為函數或函數對象 。比如shared_ptr<int> ptr(int* a,f)  //f 為刪除器。 傳回值謹慎用by-reference  參數傳遞盡量用by

C++ primer 習題9.26 的問題。

原題略。答案的問題在於   當一開始數組的第一個元素為0時,他為偶數,刪除它後,迭代器指向第一個元素1 ,錯誤在於下一句,--lit  使得迭代器指向begin的前一個,超出了範圍,所以導致運行錯誤。 必須要瞭解for語句的實現,則可以解決這個問題。#include<vector>#include<iostream>#include<list>using namespace std;int main(){int ia[]={0,1,1,2,3,5,8,13,2

Effective C++ 6

virtual函數:介面必須被繼承。non-virtual:介面和實現都被繼承。public繼承情況:Liskov Substitution PrincipleBase能用的地方都能用Derived代替。如函數參數用point或reference傳遞對象。public繼承的關鍵:is-a模型。derived-class的名稱會遮掩Base-class的名稱。例:class Base{public:virtual void mf1()=0;virtual void

C++ primer 順序容器

順序容器:vector     deque   list適配器:根據原始容器類型所提供的操作,通過定義新的操作介面,適應基礎的容器類型。 容器元素初始化: C<T> c;     //預設建構函式 C<T>c(n);   //n個值初始化,只適用於順序容器,必須給出預設建構函式 C<T>c(n,t);    //n個t  只適用於順序容器,可以不給,但要給出

thread.c

thread_block()用於將current_thread

palloc.c

這個源檔案主要講的是頁分配的過程。enum palloc_flags  {    PAL_ASSERT = 001,           /* Panic on failure. */    PAL_ZERO = 002,             /* Zero page contents. */    PAL_USER = 004              /* User page. */  };頁分配時可以有三種狀態,PAL_ASSERT:如果頁不能被分配,則kernel

C# – 函數參數的傳遞(值傳遞和引用傳遞)

近段時間,有幾個剛剛開始學習C#語言的愛好者問我:C#中的函數,其參數的傳遞,按值傳遞和按引用傳遞有什麼區別。針對這一問題,我簡單寫了個樣本程式,用以講解,希望我沒有把他們繞暈。因為,常聽別人說起:“你不說我還明白,你一說,我就糊塗了”。好,現在開始吧。我們知道,在C#中,類型有實值型別(例如int)和參考型別(例如string)之分,傳遞參數有按值傳遞和按引用傳遞之分。這樣,簡單的組合一下,我們可以得到以下幾種傳遞方式:(1)按值傳遞實值型別。(2)按值傳遞參考型別。(3)按引用傳遞實值型別。

收藏Code: Printing a DataGrid (Visual C#)

Code: Printing a DataGrid (Visual C#) This example demonstrates printing a DataGrid control. Example private void printGrid_Click(System.Object sender, System.EventArgs e) printDocument1.Print(); private void printDocument1_PrintPage(System.Object

C#Console版本貪吃蛇

        這次在工作之餘用C#寫了一個簡單的貪吃蛇程式,一般的都是WinForm形式的,這次弄了個控制台版本的,因為C#

What’s New in C# 2.0

With the release of Visual Studio 2005, the C# language has been updated to version 2.0.Generic types are added to the language to enable programmers to achieve a high level of code reuse and enhanced performance for collection classes. Generic

用C++實現簡單的檔案I/O操作

檔案 I/O 在C++中比烤蛋糕簡單多了。 在這篇文章裡,我會詳細解釋ASCII和二進位檔案的輸入輸出的每個細節,值得注意的是,所有這些都是用C++完成的。  一、ASCII 輸出  為了使用下面的方法, 你必須包含標頭檔<fstream.h>(譯者註:在標準C++中,已經使用<fstream>取代< fstream.h>,所有的C++標準標頭檔都是無尾碼的。)。這是 <iostream.h>的一個擴充集, 提供有緩衝的檔案輸入輸出操作. 事實上,

C/C++ 誤區三:強制轉換 malloc() 的傳回值

C/C++ 誤區三:強制轉換 malloc() 的傳回值 來源:螞蟻的 C/C++ 標準編程 作者:antigloss 等級:精品 發佈於2005-10-22 14:17 被讀4942次 【字型:大 中 小】      首先要說的是,使用 malloc 函數,請包含 stdlib.h(C++ 中是 cstdlib),而不是 malloc.h 。因為 malloc.h 從來沒有在 C 或者 C++ 標準中出現過!因此並非所有編譯器都有 malloc.h 這個標頭檔。但是所有的 C 編譯器都應該有

Effective C++ (二)

 條款29: 避免返回內部資料的控制代碼盡量不要返回類成員變數的地址或引用等控制代碼,以防止被外部輕易的改變。而且很容易出問題。如返回了一個類內部成員變數指標指向某個緩衝區,在外部調用delete等操作這個緩衝區,勢必造成類內部成員變數不能再有效使用了。也不要返回了一個局部對象,局部對象出了範圍之後就被銷毀。 條款30:

More effective c++ (一)

Item M1:指標與引用的區別引用必須被初始化,且不能改變它本身使其成為另一個變數的別名。Item M2:盡量使用C++風格的類型轉換這樣的類型轉換不論是對人工還是對程式都很容易識別。它們允許編譯器檢測出原來不能發現的錯誤。你能用dynamic_cast把指向基類的指標或引用轉換成指向其衍生類別或其兄弟類的指標或引用,而且你能知道轉換是否成功。失敗的轉換將返回null

More effective c++ (二)

Item M17:考慮使用lazy evaluation(懶惰計演算法)如:String s1 = "Hello";String s2 = s1;或許s2在程式中根本不會用到,所以在開始的時候不要調用s2的賦值建構函式來初始化,到後面要用,或者要改寫s2的值的時候再調用,再進行賦值。 Item M18:分期攤還期望的計算比如要計算某組資料的平均值。 我們可以在每一個新數值加入到程式裡面的時候就去計算新的平均值。這樣,當我們要取這個值的時候,可以立刻取出來。 Item M19:理解臨時對象的來源1

總頁數: 4314 1 .... 1182 1183 1184 1185 1186 .... 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.