【发布时间】:2014-01-27 10:11:44
【问题描述】:
我刚开始学习c++。 我被教导如何编写一个简单的 for 循环
例如
for (int i = 0; i < vector.size(); i++) {
//do stuff
}
但现在经常看到人们在他们的for循环中使用auto这个词。
假设我有一个包含一些数据的向量,这些数据将被带到地图上
例如
c++11 方式
vector<char> vec;
map<char, int> myMap;
vec.push_back('a');
vec.push_back('b');
vec.push_back('b');
vec.push_back('c');
// Loop through the vector
for (auto x : vec) {
++myMap[x];
}
for (auto x : myMap) {
}
这是否等同于
vector<char> vec;
map<char, int> myMap;
vec.push_back('a');
vec.push_back('b');
vec.push_back('b');
vec.push_back('c');
for (int x = 0; x < v.size(); x++) {
++myMap[v[x]];
}
for (int x = 0; x < myMap.size() x++) {
//print content in map
}
【问题讨论】:
-
这两个代码片段都不会编译 - 至少这是它们的共同点。
-
我也不相信可以取消引用指向字符类型的自动类型。如果我错了,请纠正我。
-
在第一个中,您尝试使用
string索引到map<char, int>(已被取消引用,不少,但让我们忽略那部分)。在第二个你试图取消引用char。 -
我向所有人道歉。我尽力想出一个例子。如果我给出的示例具有误导性,请原谅我。