原创 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