vector push_back后iterator还是否有效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
 
using namespace std;
 
int main()
{
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(2);
    vector<int>::iterator it = vec.begin();
    it++;
    for (int i = 5; i < 10000; i++)
        vec.push_back(i);
    int j = *it; //这里报错
    return 1;
}

实验证明:vector push_back后原来的iterator就失效了。

1
2
3
4
5
6
7
8
    list<int> li;
    li.push_back(1);
    li.push_back(2);
    list<int>::iterator itList = li.begin();
    itList++;
    for (int i = 5; i < 10000; i++)
        li.push_back(i);
    int result = *itList;

实验证明:list push_back后原来的iterator依然有效。
如此说明,iterator中存放的是成员的内存地址,而非成员相对基地址的位移。

UE4的TMap实现原理

TMap的成员ElementSetType是TSet类型,此TSet的成员是

1
TTuple<Key, Value>

TSet类由两个动态数组组成,一个用于Hash表,一个是TSparseArray。

先说TSparseArray,其成员Data是TArray类型,即动态数组,TSparseArray的特点是通过空闲成员内部指针将空闲成员链起来,这样可方便增加删除操作,但其中的增加操作的Index是无法预先指定的。

所以TSet类又用到了一个动态数组用于Hash表,这样可以计算Hash Key找到指定Hash表项,这个表项存的是Hash桶的最后一个入桶的成员在TSparseArray数组中的Index,而其它相同Hash Key的桶成员都在最后入桶成员结构内部链起来了。

判断类的继承性

比如类定义如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <memory>
#include <iostream>
 
using namespace std;
 
class BaseA
{
public:
	int i_;
};
 
class ChildA //: public BaseA
{
public:
	int i_;
};

如下的方法只会报编译错误

1
2
3
4
5
6
7
8
9
    ChildA *a = (ChildA *)1;
    if (NULL == static_cast<BaseA*>(a))
    {
        cout << "ChildA does not inherit from BaseA 2." << endl;
    }
    else
    {
        cout << "ChildA inherits from BaseA 2." << endl;
    }

如下的方法才能编译中自动检查类的继承性并作相应处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class T, class = void>
struct IsFromBaseA : false_type {};
 
template<class T>
struct IsFromBaseA<T, void>
    : is_convertible<T*, BaseA*>::type {};
 
int main()
{
    if constexpr (conjunction_v<IsFromBaseA<ChildA>>)
    {
        cout << "ChildA inherits from BaseA." << endl;
    }
    else
    {
        cout << "ChildA does not inherit from BaseA." << endl;
    }
    return 1;
}

这是enable_shared_from_this实现的基础。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <memory>
 
using namespace std;
 
class Aa : public enable_shared_from_this<Aa> // 'public' is necessary.
{
public:
	shared_ptr<Aa> retThis()
	{
		return shared_from_this();
	}
};
 
int main()
{
	shared_ptr<Aa> p1 = make_shared<Aa>();
	shared_ptr<Aa> p2 = p1->retThis();
 
	p2.reset();
	p1.reset();
	return 0;
}

当p1在构造时,会检查Aa是否是enable_shared_from_this派生的类,如果是,则在enable_shared_from_this类中维护一个引用计数;如果不是enable_shared_from_this派生的,则在shared_ptr类中维护一个引用计数。

《旷野之息》中有趣的事情

  • 盾反的速度可以超过光速。
  • 中国人在喜事上吹唢呐,在悲事上也吹唢呐。我在《旷野之息》中打wetland的西诺克斯Hinox独眼巨人时听到了唢呐,同样我在一些韩国电影中也听到过唢呐。
  • 《旷野之息》里怪物会骑马,而人类在村中商店里公开售卖怪物的guts,是怪物野蛮,还是人类野蛮?
  • 在双子山,隔着屏幕,我起了同现实中一样的恐高反应,双脚发软不敢往下看。
  • 在双子山的神庙A记下了球阵的摆放位置,我就去神庙B成功地还原摆放位置完成神庙B的挑战,之后我认为神庙A的门也已打开可直接领取神庙A的精神球,于是头也不回过去了……
  • 既然红月是盖侬为了让怪物们起死回生而出现的,那么闪电一定是盖侬在打击林克。
  • 有人建议新人先不要玩旷野之息,说Link一个人太孤单了。而我认为从某个角度可把游戏分为几类,有一种是游戏内多人玩家一人,如《最终幻想》;有一种是游戏内一人玩家多人,如《旷野之息》。
  • 电视剧我只看历史或现实剧,而《旷野之息》都是虚构的,可我却觉得真香。石中剑?

还在玩……

春秋战国年表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
      前868,	周夷王烹杀齐哀公吕不辰
 
前770-前770,	周平王东迁
 
前757-前701,	郑庄公/姬寤生/57/前743-前701/43/
 
前723-前645,	管仲
前???-前643,	齐桓公/小白/易牙,竖刁,开方
前697-前628,	晋文公/重耳/69/前636-前628/9/
前624-前607,	晋灵公/弹弓射行人,杀厨/鉏麑/赵盾
      前606,	王孙满对楚庄王/魑魅魍魉
      前605,	斗越椒之乱/狼子野心/若敖氏
前???-前605,	郑灵公/公子宋染指王八汤鼎
前???-前599,	陈灵公/夏姬/夏徵舒
前???-前554,	齐灵公/好女扮男装/晏子
前591-前541,	赵氏孤儿
前???-前531,	蔡灵侯/蔡景侯/楚灵王
前???-前529,	楚灵王/好细腰
前540-前493,	卫灵公/弥子瑕/子见南子
 
前571-前471,	老子
前559-前484,	伍子胥
前551-前479,	孔子
前547-前496,	阖闾/公子光/52/前515-前496/20/专诸刺王僚
前545-前470,	孙武/训练阖闾妃嫔
前???-前473,	夫差/前495-前473/23/干将莫邪
前???-前464,	勾践
前536-前448,	范蠡
 
前505-前425,	赵襄子/赵毋恤
前???-前415,	秦灵公/以君主妻河
 
前455-前395,	李悝/断讼以射
前440-前381,	吴起/杀妻/拒娶公主
      前379,	田氏代齐
      前376,	三家分晋
前400-前357,	田齐桓公/田午/扁鹊四见蔡桓公
前395-前338,	商鞅
前369-前286,	庄子
 
前372-前289,	孟子
前???-前316,	孙膑/围魏救赵,庞涓
前340-前295,	赵武灵王/胡服骑射/沙丘兵变
 
前???-前279,	齐孟尝君/田文
前???-前255,	范雎/远交近攻
前???-前257,	白起
前325-前251,	嬴稷/秦昭王/胁持赵胜替范雎报仇/灭周
前313-前238,	荀子
前280-前233,	韩非
前260-前260,	长平之战
前???-前251,	赵平原君/赵胜
前???-前243,	魏信陵君/魏无忌
前???-前238,	楚春申君/黄歇/李园
 
前230-前221,	秦灭六国
前259-前210,	秦始皇
前???-前208,	李斯

refer to:
https://history.sohu.com/20171230/n526739335.shtml

属性“NMakeBuildCommandLine”不存在

1
2
1>------ 已启动生成: 项目: Test01, 配置: XXX Win32 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(44,5): warning MSB8005: 属性“NMakeBuildCommandLine”不存在。  正在跳过...

原因是右键工程->属性->NMake->常规->生成命令行是空的。

请仔细审视编译输出日志,看编译对应的是哪种配置平台,如上例日志中对应的是Win32,则再查看Win32配置平台下的“生成命令行”是否为空。

或者发现编译的不是需要的配置平台,可通过“配置管理器”更正。

refer to: https://social.msdn.microsoft.com/Forums/vstudio/en-US/05c02dd5-4470-445f-8131-b993b482ff32/building-a-project-configuration-makefile?forum=vcgeneral

中国近代历史年表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
1911年10月10日,	辛亥革命
1912年,		民国0年
1913年,		二次革命(讨袁之役)
1915年-1916年,		护国战争
1917年-1922年,		护法运动
1919年,		五四运动
1921年7月23日-31日,	中共一大
1922年9月14日,		安源煤矿大罢工
 
1924年-1927年,		第一次国共合作
1925年			五卅惨案
1926年3月18日,		记念刘和珍君
1926年7月9日,		国民革命军从广东起兵,北伐开始
1926年10月-1927年3月,	上海三次工人武装起义
1927年4月12日,		四一二事件
1927年4月27日-5月9日,	中共五大
1927年7月15日,		七一五反革命政变
1927年8月1日,		南昌起义
1927年8月7日,		八七会议
1927年8月12日,		蒋介石第一次下野
1927年9月9日,		秋收起义
1927年9月29日-10月3日,	三湾改编
1927年10月,		井冈山革命根据地建立
1927年12月1日,		蒋宋联姻
1928年4月28日,		井冈山会师
1928年6月18日-7月11日,	中共六大
1928年12月29日,	东北易帜,北伐结束
 
1929年1月14日,		红四军主力出击赣南
1929年12月28日,	古田会议
 
1931年9月-1935年1月,	李德、博古
1931年9月18日,		九一八事变
1931年12月15日,	蒋介石第二次下野
1932年1月2日,		日军占领锦州东北全部沦陷
1932年1月28日-3月3日,	一二八淞沪抗战
1932年10月上旬,	宁都会议
 
1934年10月-1936年10月,	红军长征
 
1935年1月15日,		遵义会议
 
1936年12月12日,	西安事变
1937年-1940年,		王明犯了对国民党的投降主义错误
1937年7月7日,		七七卢沟桥事变,日本宣称三个月之内灭亡中国
1937年8月13日,		第二次淞沪抗战
1937年9月-1946年6月,	第二次国共合作
1937年12月13日,	南京大屠杀
1937年11月8日,		日军攻占太原
1938年3月16日-4月15日,	台儿庄战役
 
1941/5-1945/4/20,	延安整风
 
1941年12月7日,		珍珠港事件
 
1945年8月6日和9日,	广岛长崎原子弹事件,8月15日日本投降
1945/8/29-10/10,	重庆谈判
 
1949年1月21日,		蒋介石第三次下野

英格兰历史年表

1
2
3
4
前500-前100/	凯尔特人时期/Celts/
前100-400/	罗马时期/
500-550/	亚瑟王/King Arthur/威尔士
597/		圣奥古斯丁/St. Augustine of Canterbury/使当地人皈依基督教

400-800/七国时代

1
2
3
4
5
6
7
		诺森布里亚/Northumbria/
		麦西亚/Mercia/
		东盎格利亚/East Anglia/
		埃塞克斯/Essex/东撒克逊
		苏塞克斯/Sussex/南撒克逊
		威塞克斯/Wessex/西撒克逊
400-825/	肯特/Kent

802-1066/威塞克斯王朝Wessex, West Saxons

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
796-839/44/	爱格伯特/Egbert/770-839/70/
839-858/20/	埃塞尔沃夫/Aethelwulf/
858-860/3/	埃塞尔巴德/Aethelbald/831-860/39/
860-865/6/	埃塞尔伯特/Ethelbert/
865-871/7/	埃塞尔雷德一世/Ethelred I/
871-899/29/	阿尔弗烈德大帝/Alfred/876年埃丁顿之战击败丹麦维京海盗
900-924/25/	长者爱德华/Edward the Elder/
924-940/17/	埃塞尔斯坦/Athelstan/
940-946/	埃德蒙/
946-955/	埃德烈德/
955-959/	埃德威格/
959-975/	埃德加/King Edgar the Peaceful/
975-978/4/	殉教者爱德华/Edward the Martyr/Elfrida, wife of Edgar
978-1016/39/	埃塞尔雷德二世/Ethelred the Unready/丹麦金,Sweyn I
1016-1016/半年/	埃德蒙二世/Edmund II/
1041-1066/26/	忏悔者爱德华/Edward the Exile/
1040-1042/3/	哈罗德二世/Harold Godwinson/

1016-1042/丹麦王朝House of Denmark

1
2
3
1016-1035/20/	克努特一世/Knud II den Store/
1035-1040/6/	哈罗德一世/Harold I or Harold Harefoot/
1040-1042/3/	哈德克努特/Harthacnut,Knud III Hardeknu/

1066-1154/诺曼王朝House of Norman

1
2
3
4
1066-1087/22/	威廉一世/King William I/1027-1087/61/the Conqueror
1057-1100/44/	威廉二世/King William II/Rufus红毛王/1096年牛津大学
1068-1135/68/	亨利一世/King Henry I/Well-Educated, Beauclerc 儒雅王
1135-1154/20/	斯蒂芬/King Stephen/1097-1154/58/

金雀花王朝 House of Plantagenet
1154-1399/安茹王朝House of Anjou

1
2
3
4
5
6
7
8
1133-1189/57/	亨利二世/King Henry II/Curtmantle 短斗篷王/王子叛乱
1157-1199/10/	理查德一世/King Richard I/43/Coeur de Lion 狮心王/第三次十字军东征
1199-1216/18/	约翰/King John/1167-1216/50/Lackland 无地王/1209年剑桥大学
1216-1272/57/	亨利三世/King Henry III/1207-1272/66/Simon de Montfort/奉祖Edward the Exile
1272-1307/26/	爱德华一世/King Edward I/1239-1307/69/Long Shank/jus primae noctis, 排犹,William Wallace/开棺亚瑟王
1307-1327/21/	爱德华二世/King Edward II/1284-1327/44/同性恋
1327-1377/51/	爱德华三世/King Edward III/1312-1377/66/英法百年战争(1337-1453),黑死病
1377-1399/23/	理查德二世/King Richard II/1367-1400/34/

1399-1464/兰开斯特王朝House of Lancaster/red rose

1
2
3
1399-1413/15/	亨利四世/King Henry IV/1367-1413/47/
1413-1422/9/	亨利五世/King Henry V/1387-1422/36/
1422-1461/40/	亨利六世/King Henry VI/1421-1471/51/Joan of Arc, 玫瑰战争,亨利六世和查理七世(法王)争法国王位

1461-1485/约克王朝House of York/white rose

1
2
3
1471-1483/13/	爱德华四世/King Edward IV/1442-1483/42/The white queen
1483-1483/1/	爱德华五世/King Edward V/1470-1483/
1483-1485/3/	理查德三世/King Richard III/1452-1485/34/

1485-1603/都铎王朝House of Tudor

1
2
3
4
5
6
1485-1509/25/	亨利七世/King Henry VII/1457-1509/53/1492年哥伦布发现美洲
1509-1547/39/	亨利八世/King Henry VIII/1491-1547/57/新教/dissolved the monasteries/另一个波琳家的女孩
1547-1553/7/	爱德华六世/King Edward VI/1537-1553/17/
1553-1553/9天/	简格雷/Lady Jane Grey/1537-1554/18/被斩首
1553-1558/6/	玛丽一世/Queen Mary I/1516-1558/43/the Bloody血腥玛丽/
1558-1603/46/	伊丽莎白一世/Queen Elizabeth I/1533-1603/71/William Shakespeare(1564-1616)/苏格兰女王玛丽一世(1542-1587)被斩首

1603-1649/斯图亚特王朝House of Stewart

1
2
3
4
5
6
7
8
9
1603-1625/23/	詹姆斯一世/King James I/1566-1625/60/1620年新教徒乘"五月花号",Guy Fawkes(1570-1606)
1625-1649/25/	查理一世/King Charles I/1600-1649/50/国王被斩首,1637年郁金香事件,牛顿(1643-1727)
1649-1658/10/	奥利弗 克伦威尔/Oliver Cromwell/1599-1658/60/民主榜样,被掘尸
1658-1659/2/	理查德 克伦威尔/Richard Cromwell/1626-1712/87/
1660-1685/26/	查理二世/King Charles II/1630-1685/56/快乐王/放血烫头皮治中风致死
1685-1688/4/	詹姆斯二世/King James II/1633-1701/68/光荣革命,詹姆斯党
1689-1702/14/	威廉三世/King William III/1650-1702/53/1701年王位继承法,第二次百年战争(1689-1815)
1689-1694/5/	玛丽二世/Queen Mary II/1662-1694/33/同性恋,死于天花
1702-1714/13/	安妮女王/Queen Ann/1665-1714/50/英格兰与苏格兰议会合并

1714-1901/汉诺威王朝House of Hannover

1
2
3
4
5
6
1714-1727/14/	乔治一世/King George I/1660-1727/68/
1727-1760/34/	乔治二世/King George II/1683-1760/78/七年战争
1760-1820/61/	乔治三世/King George III/1738-1820/83/蒸汽革命(1760-1830),法国大革命(1789),美国独立,发现澳大利来,拿破仑,乾隆
1820-1830/11/	乔治四世/King George IV/1762-1830/69/
1830-1837/8/	威廉四世/King William IV/1765-1837/73/
1837-1901/65/	维多利亚女王/Queen Victoria/1819-1901/83/Oliver Twist 1838, 电气革命(1860-1910),两次鸦片战争,1845爱尔兰马铃薯歉收

萨克森 科堡 哥达王朝House of Sachsen-Coburg-Gotha

1
1901-1910/10/	爱德华七世/King Edward VII/1841-1910/70/

1910-至今/温莎王朝The House of Windsor

1
2
3
4
1910-1936/27/	乔治五世/King George V/1865-1936/72/一战(1914-1918),1921年爱尔兰独立战争,Angela's Ashes 1935
1936-1936/11月/	爱德华八世/King Edward VIII/1894-1972/79/因辛普森夫人退位
1936-1952/17/	乔治六世/King George VI/1895-1952/58/二战(1939-1945)
1926-至今/	伊丽莎白二世/Her Majesty Queen Elizabeth II/

refer to:
https://wenku.baidu.com/view/6971f5114431b90d6c85c769.html
https://baike.baidu.com/item/%E8%8B%B1%E5%9B%BD%E5%8E%86%E5%8F%B2%E5%B9%B4%E8%A1%A8/7062006
http://www.englishmonarchs.co.uk/saxon_37.html

安装程序无法自动安装 Virtual Machine Communication Interface Sockets (VSock)

http://www.catalog.update.microsoft.com/search.aspx?q=kb4474419
下载kb4474419 win7 x64版珍藏!

另外,win7 usb3总线驱动:
http://www.vmware.com/go/dl_intel_usb3_driver

refer to:
https://tieba.baidu.com/p/6031541992
https://kb.vmware.com/s/article/78708
https://support.microsoft.com/en-us/topic/sha-2-code-signing-support-update-for-windows-server-2008-r2-windows-7-and-windows-server-2008-september-23-2019-84a8aad5-d8d9-2d5c-6d78-34f9aa5f8339