小编Raj*_*eev的帖子

查找数组中的Majority元素

我想在这里讨论一个我在数据结构书中找到的算法.本书提供了算法的草图,以便在大小为N的数组中找到多数元素(出现多于N/2).算法草图如下:

首先,找到候选多数元素(这是更难的部分).这个候选人是唯一可能成为多数元素的元素.第二步确定这个候选人是否实际上是多数.这只是对数组的顺序搜索.要在数组中找到候选项A,形成第二个数组B.然后比较A1,A2.如果它们相等,则将其中一个添加到B; 否则什么也不做.然后比较A3和A4.如果它们相等,再将其中一个添加到B; 否则什么也不做.以这种方式继续,直到读取整个数组.然后递归地找到B的候选者; 这是A的候选人.

我想出如果N是偶数,算法工作正常.但如果N是奇数怎么办?我们如何处理这个案子?

algorithm

8
推荐指数
1
解决办法
6641
查看次数

为什么在虚基多重继承中只调用基类默认构造函数?

在多重继承中,我有一个Base由 classA和 class继承的虚拟类BA并且B是 的基类AB。请看下面的代码。在Aand 的构造函数中BBase(string)构造函数被调用。我期待得到以下输出:

Base::Base(std::string)

A::A()

B::B()
Run Code Online (Sandbox Code Playgroud)

但我得到以下输出:

Base::Base()

A::A()

B::B()
Run Code Online (Sandbox Code Playgroud)

为什么Base会调用默认构造函数?

#include<iostream>
#include<string>
using namespace std;

class Base{
public:
        Base(){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
        Base(string n):name(n){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string name;
};

class A : public virtual Base {
public:
        A():Base("A"){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string name;
};

class B : public virtual  Base {
public:
        B():Base("B"){
                cout<<__PRETTY_FUNCTION__<<endl;
        }
private:
string …
Run Code Online (Sandbox Code Playgroud)

c++ multiple-inheritance

4
推荐指数
1
解决办法
1454
查看次数

std :: less编译问题

我试图使用用户定义的类'A'与模板std :: less.我还有一个函数重写<操作符std::less.此代码未编译.

#include<iostream>
#include<functional>
using namespace std;
class A{
public:
        A(int x=0):a(x){}
        int a;
        bool operator<(const A& ref){
                return a<ref.a;
        }
};
int main()
{
        A a1(1);
        A a2(2);
        std::less<A> comp;
        if( comp(a1,a2)){
                cout<<"less"<<endl;
        }
        else{
                cout<<"more"<<endl;
        }

}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

标签 统计

c++ ×2

algorithm ×1

multiple-inheritance ×1

templates ×1