下面的代碼在Linux和Visual Studio 2015年的std ::地圖實現Linux和Windows
#include <map>
#include <iostream>
using namespace std;
int main(void)
{
map<int, int> map1;
int keyCount = 2;
for (int i = 0; i < keyCount; i++)
{
map1[i] = map1.size();
}
for (auto value : map1)
{
cout << "key: " << value.first << " value: " << value.second << endl;
}
return 0;
}
結果在Visual Studio編譯後的行爲之間的不同有所不同在linux編譯克++ -std = C++ 11 -Wall -pedantic
key: 0 value: 1
key: 1 value: 2
我有兩個問題:
據我瞭解C++中,VS實施是正確的。
如果我改變代碼:for (int i=0; i < keyCount; i++) { unsigned int mapSize= map1.size(); map1[i] = mapSize; }
那麼它的行爲像Visual Studio在兩個平臺上。
不應該代碼總是這樣嗎?
2. 什麼樣的Visual Studio編譯器設置可以用來確保VS將與Linux一樣編譯?
我在Windows上工作,但有一個必須在Linux上工作的任務。
我想知道爲什麼你會想要這樣的地圖。 –