在C++库数组中,在哪些情况下,拥有.begin()和.end()成员函数是有用的?
在cplusplus.com上,示例用法是遍历数组:
for ( auto it = myarray.begin(); it != myarray.end(); ++it )
Run Code Online (Sandbox Code Playgroud)
但
for (int i = 0; i < myarray.size(); i++)
Run Code Online (Sandbox Code Playgroud)
可以用于此.
我编写了以下仿函数,期望集合中的所有元素将按插入的相反顺序添加:
struct cmp {
bool operator () (int a, int b) {
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
当我按下面的方式测试时,添加到集合中的唯一值是1.
int main() {
set<int, cmp > combos;
combos.insert(1);
combos.insert(4);
combos.insert(7);
combos.insert(5);
combos.insert(9);
combos.insert(1);
for (int a : combos) {
cout << a << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我每次将仿函数更改为true时,所有值都按插入顺序添加到集合中[1, 4, 7, 5, 9, 1].我认为当仿函数比较器返回时true,它被视为第一个元素小于第二个元素,false表示第一个元素被视为比第二个元素更大?当我这样做return (a < b);并且 return (a > b);在操作员功能中时似乎就是这种情况.