在编程方面,我已经以非常优秀的方式成长,遗憾的是,高度优化的代码不是我的强项.我现在相当擅长C,通常可以用相当聪明的方式做事,但我仍然无法想出最优化的处理情况的方法.
一个例子是:
int strlen(const char* str)
{
char* s;
for (s=str; *s; ++s);
return s-str;
}
Run Code Online (Sandbox Code Playgroud)
我自己也永远不会想到这一点.
那么,有什么好的资源可以让你看到像这样的优化代码?我想找一个我可以阅读它背后的理论的地方,编译器在后台做了什么让它变得有价值等等.
如果注意到一些资源用于研究优化数据结构以及应用于现实场景,那也是很好的,但这可能太多了.
考虑一下代码:
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) 我正在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) 我一直在互联网上寻找有关如何使用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) 如何在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) 如何使用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(?).
我只需要在给定坐标处获得像素的颜色.
我一直在使用谷歌图表没有任何问题,但我现在已经到了一个点,我需要在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
我在我的项目中遇到了一个问题,我在头文件中声明了一个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)
并解决了这个问题.
我的问题是:为什么?
我正在阅读实现堆栈的两种不同方式:链表和动态数组.链表在动态数组上的主要优点是链接列表不必调整大小,而如果插入太多元素则必须调整动态数组的大小,从而浪费大量时间和内存.
这让我想知道C++是否属实(因为有一个矢量类会在插入新元素时自动调整大小)?
c++ ×6
arrays ×2
c ×2
iphone ×2
objective-c ×2
ajax ×1
algorithm ×1
android ×1
c# ×1
clr ×1
guid ×1
ios ×1
javascript ×1
jquery ×1
linked-list ×1
opencv ×1
pointers ×1
popupwindow ×1
size ×1
stack ×1