小编Oli*_*rLi的帖子

用C++获得准确的执行时间(微秒)

我希望在用C++实现的程序的微秒内获得准确的执行时间.我试图用clock_t获得执行时间,但这不准确.

c++ performance

30
推荐指数
3
解决办法
4万
查看次数

范围内的Kth最小值

给定一个整数数组和一些查询操作.
查询操作有两种类型
1.将第i个索引的值更新为x.
2.给2个整数找到该范围内的第k个最小值.(例如,如果2个整数是i和j,我们必须找出i和j之间的第k个最小值).
我可以使用分段树找到范围最小查询但是对于第k个最小值不能这样做.谁能帮我?

algorithm tree data-structures

16
推荐指数
2
解决办法
4142
查看次数

为什么"(`减法`)1 2"失败了?

如果反向标记将前缀函数更改为中缀,并且括号将中缀函数更改为前缀,则:

从语法上讲,为什么会(`subtract`) 1 2失败?

haskell

9
推荐指数
2
解决办法
241
查看次数

如何判断机器上的每个核心是否使用相同的计时器?

我正在尝试编写一些代码来确定是否clock_gettime使用CLOCK_MONOTONIC_RAW将给我的结果来自不同内核上的相同硬件.

据我所知,每个核心都可能产生独立的结果,并非总是如此.我被赋予了在所有内核上获得定时的任务,精度为40纳秒.

我没有使用的原因CLOCK_REALTIME是我的程序绝对不能受NTP调整的影响.

编辑:

我找到了unsynchronized_tsc函数,它试图测试所有内核上的TSC是否相同.我现在试图找出是否CLOCK_MONOTONIC_RAW基于TSC.

最终编辑:

事实证明,CLOCK_MONOTONIC_RAW它总是可以在多核系统上使用,即使在英特尔机器上也不依赖于TSC.

c linux time multicore

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

GNU C++无法创建常量自定义类实例的向量

我有一个非常简单的演示程序,可以很好地编译Microsoft Visual C++:

#include <cstdio>
#include <vector>
#include <string>

using namespace std;

class String
    :public wstring
{
public:
    String(void)
    {
    }

    String(const String &other)
        : wstring(other)
    {
    }
};

int main(void)
{
    vector<const String> v;
    v.push_back(String());
    printf("Hello, World!");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它创建常量字符串的向量.但是,在GNU C++ 4.8.2中,它提供了许多错误,试图说不可能创建常量String对象的向量.当我替换vector<const String>vector<String>,它编译.这种GNU C++行为的原因是什么?

c++ gcc vector visual-c++

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

C++ strtoull函数未定义?

我正在使用visual studio 2012,并且strtoullstrtoul工作正常时未定义.我已经包括在内

#include <stdio.h>
#include <stdlib.h>
Run Code Online (Sandbox Code Playgroud)

strtoull仍未定义.

c++ visual-c++

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

带有SpannableStringBuilder和ImageSpan的Wrappable TextView隐藏了每一行的最后一个图像

我正在用元素动态填充多行TextView.输入的元素行是可以包装的.每个元素由两部分组成:文本后跟图像.图像的长度为2个字符.元素由空格分隔.添加元素我正在使用SpannableStringBuilder.除了一件事,一切都很好.在添加到下一行的新元素(TextView包装线)时,前一行元素的图像(即上一行中的最后一个元素)将消失,无论该行上仍有多少空间可用.如果我删除新行上新添加的元素,该图像将再次出现.因此,每行上最后一个元素的图像部分不会显示出来.我使用的是Android 4.0.3.

这是我的代码:

TextView textView = (TextView) findViewById(R.id.textview);
textView.setMovementMethod(new ScrollingMovementMethod());

SpannableStringBuilder ssb = new SpannableStringBuilder();

//then for each new element I do the following
ssb.append(" "); //space separating elements (skip for the first element)
ssb.append("text");
Bitmap image = BitmapFactory.decodeResource( getResources(), imageId );
ssb.append("  "); //prepare 2-character space for the image
ssb.setSpan( new ImageSpan(image), ssb.length() - 2, ssb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE ); //put the image to the prepared space
textView.setText( ssb, BufferType.SPANNABLE );
Run Code Online (Sandbox Code Playgroud)

我知道TextWatcher有一个解决方案.同时,我在代码中看不到任何流,也无法理解为什么每行上的最后一个图像都被隐藏了.任何建议将受到高度赞赏.谢谢.

java android textview

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

使用STRCPY C.

我代码:

#include<stdio.h>
#include<conio.h>
#include<string.h>

void main()
{
    char string[]="stackflow";
    strcpy(&string[0],&string[1]);
    puts(string);
    getch();
}
Run Code Online (Sandbox Code Playgroud)

结果是"潮流".我不明白.你能解释一下谁?预先感谢.

c strcpy

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

如何减小对象的大小

我正在使用 Visual C++ 编写一个应用程序。我写了 CMyObject 类,可能会分配很多 CMyObject 对象的实例,所以我想减少 CMyObject 类的大小。

我能想到的是:

首先,我可以使用以下代码来获取 CMyObject 对象的单个实例使用的准确大小:

CMyObject Object;

//  Get the size of memory allocated for CMyObject object
int nSize = sizeof(Object);
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

二、减小CMyObject的大小,我有几个思路:

(1) 可能的话把成员函数改成静态成员函数,因为每个成员函数在CMyObject的实例中都会占用一些空间。

(2) 可能的话把虚成员函数改成成员函数,因为虚成员函数可能占用更多的空间。

(3)去掉不必要的成员变量,减少空间。

(4) 最后,如果(1)、(2)和(3)效果不好,则将CMyObject从class改为只包含一些成员变量的struct,这样就消除了为类的构造函数和析构函数分配的空间.

我的想法正确吗?

谢谢

c++ variables size

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

为什么这个c程序输出奇怪的字符?

在Windows下的MinGW中编译后,下面的C代码给出了我无法理解的输出.

#include <stdio.h>
main()
{
    char s[100];
    int i,c;
    for(i=0;i<100-1&&(c=getchar())!=EOF&&c!='\n';++i)
        s[i]=c;
    if(c=='\n'){
        s[i]=c;
        ++i;
    }
    s[i]='p';
    printf("%s",s);
}
Run Code Online (Sandbox Code Playgroud)

输出是

在此输入图像描述

为什么"p"后面有奇怪的字符?他们的意思是什么?

c

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

写入文件时fprintf不像printf吗?

我查看了文档:

在这里说:

成功打开文件后,您可以使用fscanf()从中读取文件或使用fprintf()写入文件.这些函数就像scanf()和printf()一样工作,除了它们需要一个额外的第一个参数,一个FILE*用于读/写文件.

所以,我这样编写了我的代码,并确保包含一个条件语句以确保文件打开:

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

void from_user(int*b){

    b = malloc(10);
    printf("please give me an integer");
    scanf("%d",&b);

}

void main(){

    FILE *fp;

    int*ch = NULL;
    from_user(ch);
    fp = fopen("bfile.txt","w");

    if (fp == NULL){
        printf("the file did not open");
    }
    else {
        printf("this is what you entered %d",*ch);
        fprintf(fp,"%d",*ch);  
        fclose(fp);
        free(ch);   
    }
}
Run Code Online (Sandbox Code Playgroud)

我错了还是文档没有正确解释?谢谢.

c c++ linux file-io printf

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