Вопрос по set, c++ – Какой оператор нужно переопределить, чтобы использовать std :: set в коде C ++?

0

Это вопрос интервью.

Referring to the sample code, which one of the operators needs to be overridden in order to use std::set<Value>

 #include<iostream>

 class Value
 {
      std::string   s_val;
      int           i_val;
  public:
      Value(std::string s, int i): s_val(s) , i_val(i){}
 };

 // EOF

 /*
 a       operator !=
 b       operator >
 c       operator <=
 d       operator >=
 e       operator <
 */

На самом деле, я не понимаю, почему оператор должен быть переопределен здесь. & Quot; установить & Quot; не допускает дублирование элементов, может быть, оператор! = должен быть переопределен?

Error: User Rate Limit Exceeded Walter
Error: User Rate Limit Exceededoperator!=Error: User Rate Limit Exceededoperator==Error: User Rate Limit Exceeded 6502
Error: User Rate Limit Exceededstd::set with user defined type, how to ensure no duplicates Bo Persson

Ваш Ответ

4   ответа
5

havestd::setbool operator<()

Error: User Rate Limit ExceededifError: User Rate Limit Exceededoperator<Error: User Rate Limit Exceededoperator<Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededIf std::set<Value>Error: User Rate Limit Exceededstd::less<Value>Error: User Rate Limit Exceededoperator<?
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstd::less<Value>Error: User Rate Limit Exceededoperator <Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
2

operator<strick weak orderingstd::setstd::map.

Strict Weak Ordering

std map composite key
1

operator=operator!=

if (!(a < b || b < a))
    // equivalent!
0

Похожие вопросы