小编Bo *_*son的帖子

C/C++优化

在编程方面,我已经以非常优秀的方式成长,遗憾的是,高度优化的代码不是我的强项.我现在相当擅长C,通常可以用相当聪明的方式做事,但我仍然无法想出最优化的处理情况的方法.

一个例子是:

int strlen(const char* str)
{
    char* s;
    for (s=str; *s; ++s);
    return s-str;
}
Run Code Online (Sandbox Code Playgroud)

我自己也永远不会想到这一点.

那么,有什么好的资源可以让你看到像这样的优化代码?我想找一个我可以阅读它背后的理论的地方,编译器在后台做了什么让它变得有价值等等.

如果注意到一些资源用于研究优化数据结构以及应用于现实场景,那也是很好的,但这可能太多了.

c c++ compiler-construction

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

是否将数组参数传递给函数而不是常量指针?

考虑一下代码:

void foo(char a[]){
   a++;            //  works fine, gets compiled
   //... 
}
Run Code Online (Sandbox Code Playgroud)

现在,考虑一下:

void foo(){
   char a[50];
   a++;            //  Compiler error
   //... 
}
Run Code Online (Sandbox Code Playgroud)

我听说一个数组相当于一个常量指针,不能递增,因为它不是一个左值...

那么为什么第一个代码被编译,是这样的,因为函数的数组参数作为指针传递,即T []被转换为T*以传递..所以,foo(a)传递一个作为指针.

但它是否再次转换为T [],因为声明为:

void foo(char a[]);
Run Code Online (Sandbox Code Playgroud)

c c++ arrays pointers

7
推荐指数
2
解决办法
1057
查看次数

如何在Windows Mobile上使用视频预览填充屏幕

我正在Windows Mobile设备上创建一个视频捕获应用程序.在MainFrame中有菜单和状态窗口(自定义窗口).视频大小宽度:高度比为4:3,因此在屏幕上有一些其他元素的情况下,视频不会填满整个区域.

这是安排屏幕元素的功能:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    ToggleFullScreen(TRUE);
    CScreenOrientation::SetScreenOrientation(270);
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    RECT r;
    GetWindowRect(&r);
    if (!m_wndStatus.Create(NULL, NULL, WS_CHILD | WS_VISIBLE, 
                CRect(0, 0, r.right, TOOLBAR_HEIGHT), this, AFX_IDW_PANE_FIRST + 1, NULL))
    {
        TRACE0("Failed to create status view\n");
        return -1;
    }

    // Create a camera view
    if (!m_wndCameraView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
        CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))
    {
        TRACE0("Failed to create camera view\n");
        return -1;
    }
    m_wndCameraView.SetLogDirectory(m_Settings.m_LogDirectory);

    if (!m_wndCommandBar.Create(this) ||
        !m_wndCommandBar.AddAdornments(dwAdornmentFlags) ||
        !m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME))
    {
        TRACE0("Failed to create CommandBar\n");
        return …
Run Code Online (Sandbox Code Playgroud)

c++ size windows-mobile

6
推荐指数
0
解决办法
352
查看次数

使用带有Objective-C的libmms

我一直在互联网上寻找有关如何使用libmms的教程或示例的几天.似乎没有,这对于似乎被广泛使用的lib来说很奇怪.

LibMMS是一个用于解析mms://和mmsh://类型网络流的公共库. http://sourceforge.net/projects/libmms/files/libmms/0.6.2/libmms-0.6.2.tar.gz/download

我找到的唯一代码示例来自stackoverflow上的另一篇文章.

这将在下面显示.

mms_connect(NULL, NULL, g_tcUrl.av_val, g_hostname.av_val, g_playpath.av_val, "", g_port, 128*1024)
Run Code Online (Sandbox Code Playgroud)

注意:

NSString* strTemp;      
strTemp = @"mms://123.30.49.85/htv2";
// strTemp = @"mms://212.58.251.92/wms/bbc_ami/radio1/radio1_bb_live_int_eq1_sl0";
g_tcUrl.av_val = new char[[strTemp length] + 1];
[strTemp getCString:g_tcUrl.av_val
          maxLength:([strTemp length]+1)
           encoding:NSUTF8StringEncoding];
g_tcUrl.av_len = strlen(g_tcUrl.av_val);
//strTemp = @"212.58.251.92";
strTemp = @"123.30.49.85";
g_hostname.av_val = new char[[strTemp length]+1];       
[strTemp getCString:g_hostname.av_val
          maxLength:([strTemp length]+1)
           encoding:NSUTF8StringEncoding];
g_hostname.av_len = strlen(g_hostname.av_val);
//strTemp = @"/wms/bbc_ami/radio1/radio1_bb_live_int_eq1_sl0";
strTemp = @"/htv2";
g_playpath.av_val = new char[[strTemp length] + 1];         
[strTemp getCString:g_playpath.av_val
          maxLength:([strTemp length]+1)
           encoding:NSUTF8StringEncoding];
g_playpath.av_len = strlen(g_playpath.av_val);
g_port = …
Run Code Online (Sandbox Code Playgroud)

c++ iphone objective-c

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

打开一个PopupWindow,让外面的东西仍然可以触摸

如何在Android上打开PopupWindow并让所有其他组件都可以触摸而不会忽略PopupWindow?

这就是它的创建方式:

public class DynamicPopup {
    private final PopupWindow window;
    private final RectF rect;
    private final View parent;
    private final RichPageView view;

    public DynamicPopup(Context context, RichPage page, RectF rectF, View parent) {
        this.parent = parent;
        rect = rectF;

        window = new PopupWindow(context);

        window.setBackgroundDrawable(new BitmapDrawable());
        window.setWidth((int) rect.width());
        window.setHeight((int) rect.height());
        window.setTouchable(true);
        window.setFocusable(true);
        window.setOutsideTouchable(true);

        view = new RichPageView(context, page, false);
        window.setContentView(view);

        view.setOnCloseListener(new Listener(){
            @Override
            public void onAction() {
                window.dismiss();
            }
        });


    }

    public void show() {
        window.showAtLocation(parent, Gravity.NO_GRAVITY, (int) rect.left, (int) rect.top);
    } …
Run Code Online (Sandbox Code Playgroud)

android popupwindow

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

访问像素值OpenCV 2.3 - C++

如何使用C++访问OpenCV 2.3中的各个像素?
对于我的U8C3图像,我试过这个:

Scalar col = I.at<Scalar>(i, j);
Run Code Online (Sandbox Code Playgroud)

p = I.ptr<uchar>(i);
Run Code Online (Sandbox Code Playgroud)

首先是抛出异常,第二个是返回一些不相关的数据.我能够找到的所有示例都是针对C版OpenCV的旧IIPimage(?).

我只需要在给定坐标处获得像素的颜色.

c++ opencv

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

Rails中的Google Charts 3.1 Ajax Partial

我一直在使用谷歌图表没有任何问题,但我现在已经到了一个点,我需要在Ajax呈现的部分内显示图表.

显然没有任何表现.我知道这与Java触发器有关,可以构建未激活的图表,但我需要一些帮助,确切地知道我需要做什么......

目前我有类似的东西(非Ajax):

 <html>
  <head>
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load("visualization", "1", {packages:["corechart"]});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Year');
        data.addColumn('number', 'Sales');
        data.addColumn('number', 'Expenses');
        data.addRows([
          ['2004', 1000, 400],
          ['2005', 1170, 460],
          ['2006', 660, 1120],
          ['2007', 1030, 540]
        ]);

        var options = {
          width: 400, height: 240,
          title: 'Company Performance',
          vAxis: {title: 'Year',  titleTextStyle: {color: 'red'}}
        };

        var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <div id="chart_div"></div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery google-visualization ruby-on-rails-3.1

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

iOS,NSMutableDictionary

我在我的项目中遇到了一个问题,我在头文件中声明了一个NSMutableDictionary属性,如下所示:

@property (copy, nonatomic) NSMutableDictionary *DataDict ;
Run Code Online (Sandbox Code Playgroud)

现在在实现文件中,我继续初始化这个字典因为我要使用它,就像这样:

DataDict = [[NSMutableDictionary alloc]init];
Run Code Online (Sandbox Code Playgroud)

现在,当我这样做时,我尝试在此字典中添加内容的那一刻我会收到此错误消息:

- [__ NSDictionaryI setObject:forKey:]:发送到实例0x885ae60的无法识别的选择器2012-10-19 16:51:56.040 testing [2297:c07] * 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSDictionaryI setObject: forKey:]:无法识别的选择器发送到实例0x885ae60'

过了一会儿,我的项目运行了一千次,我决定取消注释我的初始化行,就像这样

 //DataDict = [[NSMutableDictionary alloc]init];
Run Code Online (Sandbox Code Playgroud)

并解决了这个问题.

我的问题是:为什么?

iphone objective-c nsmutabledictionary ios

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

为什么System.Guid没有实现System.IConvertible?

我最近尝试从接受的方法返回Guid类型的对象<T>,但是编译器给了我以下错误:

类型'System.Guid'不能用作泛型类型或方法'MyGenericMethod'中的类型参数'T '.从'System.Guid''System.IConvertible'没有拳击转换.

经过调查,我意识到编译器消息是由于Guid类型没有实现System.IConvertible接口而引起的.

MSDN声明如下:

此接口提供了将实现类型的实例的值转换为具有等效值的公共语言运行时类型的方法.

提供的类型列表不包括Guid; 任何人都可以解释/提供一个用例,为什么会这样?

c# clr guid

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

链表和动态数组,用于使用向量类实现堆栈

我正在阅读实现堆栈的两种不同方式:链表和动态数组.链表在动态数组上的主要优点是链接列表不必调整大小,而如果插入太多元素则必须调整动态数组的大小,从而浪费大量时间和内存.

这让我想知道C++是否属实(因为有一个矢量类会在插入新元素时自动调整大小)?

c++ arrays algorithm stack linked-list

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