小编mil*_*lim的帖子

什么是.begin()和.end()?

在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)

可以用于此.

c++ arrays std stdarray

14
推荐指数
3
解决办法
1538
查看次数

C++:为什么返回false的set order的仿函数只允许将一个元素添加到集合中?

我编写了以下仿函数,期望集合中的所有元素将按插入的相反顺序添加:

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);在操作员功能中时似乎就是这种情况.

c++ sorting icomparable std set

2
推荐指数
1
解决办法
65
查看次数

标签 统计

c++ ×2

std ×2

arrays ×1

icomparable ×1

set ×1

sorting ×1

stdarray ×1