原创 C語言的結構體對齊問題,延伸到C++的類的size

兩個原則: 1、一個自動變量,多數在棧上,起始地址默認要求是其自身大小的整數倍。 即 char c; c的地址可以任意。 int a;  a的地址必須是sizeof(int)的整數倍。 2、一個結構體的大小,必須是其內部成員size的最大公

原创 這種情況下也會發生多態。以前不知道。

#include <iostream> using std::cout; class A{ public: virtual void f(){cout << "A f\n";} }; class B:public A{ pu

原创 引用作爲類的成員

#include <iostream> #include <stdio.h> using std::cout; using std::endl; class A{ public: A(int a):r(a){printf("A

原创 爲什麼移動構造要使用noexcept

vector::push_back操作,保證瞭如果過程中出現異常,vector不會發生變化。 push_back過程中,可能會因爲已有內存空間不夠,申請新的內存,同時把原內存中已有的元素,放到新申請的內存中。 這時候,如果移動構造不保證沒有

原创 LeetCode 11. Container With Most Water

https://leetcode.com/problems/container-with-most-water/ 給出一堆數,是一個一維向量上的高。求出左右兩個數作爲高度,最大的裝水的面積。   第一種,最笨的辦法,就是  輪詢,o(n^2

原创 爲什麼對string調用swap會導致迭代器失效

一般來說,swap操作將容器內容交換不會導致容器的指針、引用、迭代器失效。 但當容器類型爲array和string時除外。 原因在於:SSO  (Short String Optimization 指C++針對短字符串的優化。)   默

原创 3sum 求三數之和等於0,不允許重複

https://leetcode.com/problems/3sum/ 套路比較常見了,最重要的是去重。還是沒法一次通過。 class Solution { public: vector<vector<int>> threeS

原创 靜態變量

static 變量在類聲明中只是聲明,要在外面單獨定義。   不能在對象中直接訪問?可以訪問。但是要在外面定義。   初始化列表不能對靜態成員做初始化。 靜態成員變量遵守普通成員變量的規則。 a.i  A::i 都可以。   靜態函數中th

原创 回溯法 17. Letter Combinations of a Phone Number

class Solution { public: map<char,string> dict; vector<string> letterCombinations(string digits) {

原创 回溯法 Generate Parentheses,第二次總結

class Solution { public: vector<string> ans; void helper(string& cur, int left, int right, int n)

原创 循環隊列搜索 Search in Rotated Sorted Array

這裏比較重要的是,不要一上來就判斷mid 和 target有沒有關係。因爲數組是無序的,這樣的判斷毫無結論,只會搞的更復雜。應該先想辦法判斷出哪一側是有序的。class Solution { public: int searc

原创 用虛表做些壞事

class A{ public: virtual void f() { cout << "A::f()" << endl; } }; class