小编seh*_*ehe的帖子

测量c ++中popcount函数的时间

我感兴趣的是如何把它放在循环中,以便获得cpu执行每个不同操作的实时时间

#include<iostream>
#include<cstdlib>
#include<time.h>

using namespace std;
typedef unsigned __int64 uint64;
const uint64 m1=0x5555555555555555;
const uint64 m2=0x3333333333333333;
const uint64 m4=0x0f0f0f0f0f0f0f0f;
const uint64 m8=0x00ff00ff00ff00ff;
const uint64 m16=0x0000ffff0000ffff;
const uint64 m32=0x00000000ffffffff;
const uint64 hff=0xffffffffffffffff;
const uint64 h01=0x0101010101010101;

uint64 popcount_1(uint64 x)
{
    x=(x&m1)+((x>>1)&m1);
    x=(x&m2)+((x>>2)&m2);
    x=(x&m4)+((x>>4)&m4);
    x=(x&m8)+((x>>8)&m8);
    x=(x&m16)+((x>>16)&m16);
    x=(x&m32)+((x>>32)&m32);
    return (uint64)x;
}

//This uses fewer arithmetic operations than any other known
//implementation on machines with slow multiplication.
//It uses 17 arithmetic operations.
int popcount_2(uint64 x)
{
    x-=(x>>1)&m1;//put count of each 2 bits into those …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm bit cpu-speed

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

c ++构造函数使用不正确的参数类型来构造对象

我有以下层次结构:

我有以下层次结构:

GameStateBaseClass -> IGameStateInterface -> IntroState
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我使用GameEngine引用实例化一个IntroState时(我在GameStateBaseClass中定义)我得到以下错误:

错误1错误C2664:'IntroState :: IntroState(const IntroState&)':无法将参数1从'GameEngine'转换为'const Short :: IntroState&'

在GameStateBaseClass中,我定义了一个带有const GameState引用的构造函数,在main.cpp中我传入了一个游戏引擎的实例.为什么它试图将我的GameEngine参数转换为IntroState引用呢?

这是相应的代码:

GameStateBaseClass.hpp

class GameStateBaseClass
{
    public:
        GameStateBaseClass(const GameEngine &instance);
    private:
        GameStateBaseClass(void); // = delete; // c++1x
        GameStateBaseClass(const GameStateBaseClass &instance); // = delete; // c++1x
        GameStateBaseClass operator=(const GameStateBaseClass &instance); // = delete; // c++1x

        // private members
        const GameEngine &game_engine_instance;
}
Run Code Online (Sandbox Code Playgroud)

GameStateBaseClass.cpp

GameStateBaseClass::GameStateBaseClass(const GameEngine &instance) 
    : game_engine_instance(instance) {
}

// IGameStateInterface.hpp 
class IGameStateInterface : GameStateBaseClass
{
     public:
        virtual void Init() = 0;
        virtual void …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance constructor interface reference

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

C++中的流控制构造,如何修改?

这是代码段.如果if语句成功,我想回到循环1.如果if语句成功,我需要程序不添加1000.

editA.i 在程序开头== 0.

我想比较两列字符串并获得距离度量.

我尝试过break和continue命令,但是没有一个能按我的意愿工作.

谢谢

for(editA.i; editA.i<6; editA.i++)  // Loop 1
{
    for(editB.j=0; editB.j<6; editB.j++)    // Loop 2
    {
        if(editA.A[editA.i] == editB.B[editB.j])  // if this statment works, 
            // I want to go back to "Loop 1". How???

            sum+= abs(editA.i - editB.j);

        else
            sum+= 1000;
    }

}
Run Code Online (Sandbox Code Playgroud)

c++ loops for-loop if-statement

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

3x3阵列= 10个数字

我有这个代码

#include <math.h>
#include <stdio.h>

const int n = 3;
const int s = 3;
int getm(int mat[n][s]);
int printm(int mat[n][s]);

int main()
{
    int m[n][s];
    getm(m);
    printm(m);
    return 0;
}

int getm(int mat[n][s])
{
    for(int x = 0;x < n;x++)
    {
        for (int y = 0;y<s;y++)
        {
            scanf("%i ", &mat[x][y]);
        }
    }
    return 0;
}
int printm(int mat[n][s])
{
    for(int x = 0;x<n;x++)
    {
        for(int y = 0;y<s;y++)
        {
            printf("%i ", mat[x][y]);
            if(y==(s-1))
            {
                printf("\n");
            }
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c arrays

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

解析树程序错误

我说,在该代码中有一个错误用于解析表达式

"146 C:\ Dev-Cpp\zc''show_tree'的冲突类型111 C:\ Dev-Cpp\zc'show_tree'之前的隐式声明在这里"

请帮忙...

#include<stdio.h>
#include<stdlib.h>

int getOperatorPosition(char);

#define node struct tree1

int matrix[5][5]=
{
    {1,0,0,1,1},
    {1,1,0,1,1},
    {0,0,0,2,3},
    {1,1,3,1,1},
    {0,0,0,3,2}
};
int tos=-1;
void matrix_value(void);
//node create_node(char,*node);void show_tree( node *);
int isOperator(char);

struct tree1
{
    char data;
    node  *lptr;
    node  *rptr;
}
*first;


struct opr
{
    char op_name;
    node *t;
}
oprate[50];

char cur_op[5]= {'+','*','(',')','['};
char stack_op[5]= {'+','*','(',')',']'};

int main()
{
    char exp[10];
    int ssm=0,row=0,col=0;
    node *temp;
    //    clrscr();
    printf("Enter Exp : ");
    scanf("%s",exp);
    matrix_value();
    while(exp[ssm] != …
Run Code Online (Sandbox Code Playgroud)

c

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

对指针感到困惑

我刚刚开始学习c ++(我现在更像是一个java开发人员)并且使用指针时有些困惑...例如,以下代码可以正常工作

int main() {
    int x = 5;
    int * y;
    y = &x; //note this line of code
    *y = 10;
}
Run Code Online (Sandbox Code Playgroud)

而这段代码不起作用

int main() {
     int x = 5;
     int * y;
     y = x;
     *y = 10;
}
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么使用y = &x作品获取值"位置" 但是一旦我用它替换它y = x就会导致错误.如果有人知道对指针的一个很好的解释请分享链接:)

谢谢!

c++ pointers

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

分数运算符

我需要编写一个程序来计算分数,这是我的头文件:

#ifndef FRACTION_H
#define FRACTION_H
#include <iostream>
#include <string>
using namespace std;

class Fraction {

    private:
        int *numer;
        int *denom;
        int gcd(int, int);
    public:
        void reduce();
        int getNum();
        int getDen();
        Fraction();
        Fraction(int numerator);
        Fraction(int num, int den);
        Fraction(string s);  // take string parameter of the form of "numerator/defnominator
        Fraction(Fraction &other);  // copy constructor
        Fraction & operator=(Fraction & rhs);
        ~Fraction();
        // overloading arithematic operation
        Fraction & operator+ (Fraction & rhs);
        Fraction & operator- (Fraction & rhs);
        Fraction & operator* (Fraction & …
Run Code Online (Sandbox Code Playgroud)

c++ string class operator-keyword

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

提高几何精度损失

#include <iostream>
#include <vector>
#include <boost/geometry.hpp>
#include <boost/geometry/strategies/cartesian/distance_pythagoras.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/multi/geometries/multi_polygon.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
#include <boost/foreach.hpp>

int main(int argc, char *argv[])
{
    typedef boost::geometry::model::d2::point_xy<double> point;
    typedef boost::geometry::model::polygon<point> polygon;
    std::stringstream ss;
    std::string sstring;
    char *poly1 =
        "POLYGON((45.4602851 9.1146293,45.4602851 9.1196293,45.4652851 9.1196293,45.4652851 9.1146293,45.4602851 9.1146293))";
    char *buffer = NULL;
    int poly1StrLen;
    double tmp;
    polygon poly, newPoly;
    point p1;

    boost::geometry::read_wkt(poly1, poly);
    boost::geometry::correct(poly);
    BOOST_FOREACH(point const & p, boost::geometry::exterior_ring(poly))
    {
        //     ss << boost::geometry::wkt(p);
        //      p1.x(p.y());
        //      p1.y(p.x());
        boost::geometry::append(boost::geometry::exterior_ring(newPoly), p);
    }
    ss << …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-geometry

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

如何为数组分配繁琐的重复值?

我想创建一个10×10的数组,其中包含'.'每个元素.所以我写道:

int A[10][10]={ '.','.','.','.',
Run Code Online (Sandbox Code Playgroud)

(等一下我要写100个句号和100个逗号)

               '.','.','.'}
Run Code Online (Sandbox Code Playgroud)

另一种方法是写'.',10次​​,然后复制粘贴10次,但这仍然需要时间,我不认为这是最聪明的方法.

有更聪明的方法吗?我不想写那么久的句号.

c

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

为什么BGL函数的参数用点而不是逗号分隔?

我在读某人的密码.这是来自boost图库的函数.这是原始的函数定义.

 void dijkstra_shortest_paths
      (const Graph& g,
       typename graph_traits<Graph>::vertex_descriptor s, 
       PredecessorMap predecessor, DistanceMap distance, WeightMap weight, 
       VertexIndexMap index_map,
       CompareFunction compare, CombineFunction combine, DistInf inf, DistZero zero,
       DijkstraVisitor vis, ColorMap color = default)
Run Code Online (Sandbox Code Playgroud)

这是我从某人那里挑选出的一段代码.它有效,但我只是不明白他为什么在中间使用点predecessor_map weight_mapdistance_map不是逗号?他传入函数的参数是多少?

dijkstra_shortest_paths(graph, source_vertex,
                          predecessor_map(&predecessors[0])
                          .weight_map(get(&Edge::cost, graph))
                          .distance_map(&distances[0]));
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-graph

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