Пример #1
0
    void
    increment() override
    {
        assert (sle1_ || sle0_);

        if (sle1_ && !sle0_)
        {
            inc1();
            return;
        }

        if (sle0_ && !sle1_)
        {
            inc0();
            return;
        }

        if (sle1_->key () == sle0_->key())
        {
            inc1();
            inc0();
        }
        else if (sle1_->key () < sle0_->key())
        {
            inc1();
        }
        else
        {
            inc0();
        }
        skip();
    }
Пример #2
0
int main(void) {
    int value1 = 0; // Reference valid in scope where closure is used.
    boost::function<int (void)> inc1 = inc(value1);
    int value2 = 0;
    boost::function<int (void)> inc2 = inc(value2);

    BOOST_TEST(inc1() == 1);
    BOOST_TEST(inc1() == 2);
    BOOST_TEST(inc2() == 1);
    BOOST_TEST(inc1() == 3);
    return boost::report_errors();
}
Пример #3
0
 void skip()
 {
     while (iter1_ != end1_ &&
         iter1_->second.first == Action::erase &&
            sle0_->key() == sle1_->key())
     {
         inc1();
         inc0();
         if (! sle0_)
             return;
     }
 }
Пример #4
0
 bool increasingTriplet(vector<int>& nums) {
     if (nums.size() < 3) return false;
     
     vector<int> inc1(nums.size(), 0), inc2(nums.size(), 0);
     int minx = INT_MAX;
     for (int i = 0; i < nums.size(); i++) {
         if (nums[i] > minx) inc1[i] = 1;
         else if (nums[i] < minx) minx = nums[i];
     }
     
     int maxx = INT_MIN;
     for (int i = nums.size()-1; i >= 0; i--) {
         if (nums[i] < maxx) inc2[i] = 1;
         else if (nums[i] > maxx) maxx = nums[i];
     }
     
     for (int i = 0; i < nums.size(); i++) {
         if (inc1[i] == 1 && inc2[i] == 1) return true;
     }
     return false;
 }