如果我有一个类型t
type t = C of string;;
并且想要明确定义变量的类型为t:
let b : t = C 'MyString';;
我可以在OCaml中做到吗?
我一直在研究一些声音处理代码,现在我正在做一些可视化.我完成了谱图光谱图,但我如何绘制它太慢了.
我正在使用OpenGL进行2D绘图,这使得搜索帮助变得更加困难.我也是OpenGL的新手,所以我不知道事情的标准方式.
我将每个像素的r,g,b值存储在一个大矩阵中.每次我得到一个小的声音片段,我处理它并将其转换为像素列.一切都转移到左边1像素,新线放在最后.
每次重绘时,我都会循环设置颜色并单独绘制每个像素,这似乎是一种非常低效的方法.
有一个更好的方法吗?是否有一些方法可以简单地移动一堆像素?
您使用的自定义ASP.NET MVC模型验证属性是什么.似乎有很多可能性(邮政编码,电子邮件地址,过去的日期等),但我没有找到任何好的来源,这些是共享的.我将使用以下内容开始列表:
**问题编辑**
这是一个典型的Makefile模板:
TARGET = my_prog # project name
CC = gcc -o
CFLAGS = -Wall
SOURCES := $(wildcard *.c)
INCLUDES := $(wildcard *.h)
OBJECTS := $(SOURCES:.c=*.o)
rm = rm -f
$(TARGET): $(OBJECTS)
@$(CC) $(TARGET) $(CFLAGS) $(SOURCES)
@echo "Compilation complete!"
clean:
@$(rm) $(TARGET) $(OBJECTS)
@echo "Cleanup complete!"
Run Code Online (Sandbox Code Playgroud)
问题:为什么线路11(@S(CC) $(TARGET) ...)在呼叫时仍然回响make?
答:因为问题在默认规则中,第11行很好.
**更新**
我现在有这个 Makefile
# project name
TARGET = my_prog
CC = gcc -c
CFLAGS = -Wall -I.
LINKER …Run Code Online (Sandbox Code Playgroud) 考虑foo具有两个这样定义的构造函数的类:
class foo
{
public:
foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};
Run Code Online (Sandbox Code Playgroud)
使用字符串文字实例化类,并猜测调用哪个构造函数?
foo a ("/path/to/file");
Run Code Online (Sandbox Code Playgroud)
输出:
ctor 2
我不了解你,但我没有发现编程历史中最直观的行为.我打赌它有一些聪明的理由,但我想知道它可能是什么?
我想在主表"Table1"中进行插入,更新或删除时将行插入到审计表中 - 无论哪个列被更改/插入都无关紧要.我还想在插入,更新或删除时添加I,U或D. 对于插入和删除,我正在检查inserted和deleted表中是否存在行.什么是接近更新的最佳方式.
我的插入和删除代码是:
CREATE TRIGGER [dbo].[tr_Table1_InsertUpdate_Table1History_Insert]
ON [dbo].[Table1]
FOR INSERT, DELETE, UPDATE
AS
BEGIN
IF EXISTS(SELECT * FROM Inserted)
BEGIN
INSERT INTO Table1History(...., ModificationType)
SELECT ..., 'I'
FROM Inserted
END
IF EXISTS(SELECT * FROM Deleted)
BEGIN
INSERT INTO Table1History(..., ModificationType)
SELECT ..., 'D'
FROM Deleted
END
END
GO
Run Code Online (Sandbox Code Playgroud)
请帮忙!
我想实现一项功能,即如果用户离开页面并且页面上有未保存的更改,则会收到警报.因此,我需要捕获从页面触发移动的事件并对其执行自定义操作.希望用jquery做到这一点.有小费吗?
我需要知道如何让VS2010识别出产生错误的directx文件(参见问题标题).
我很确定我需要添加一行:"C:\ Program Files(x86)\ Microsoft Directx SDK(2010年6月)\包括
但我不完全确定如何在2010年这样做,所以有人可以帮我吗?
我知道多态可以增加明显的开销.调用虚函数比调用非虚函数要慢.(我的所有经验都是关于GCC的,但我认为/听说过任何真正的编译器都是如此.)
很多时候,一个给定的虚函数被反复调用同一个对象; 我知道对象类型不会改变,并且大多数时候编译器可以很容易地推断出对象类型:
BaseType &obj = ...;
while( looping )
obj.f(); // BaseType::f is virtual
Run Code Online (Sandbox Code Playgroud)
为了加快代码,我可以像这样重写上面的代码:
BaseType &obj = ...;
FinalType &fo = dynamic_cast< FinalType& >( obj );
while( looping )
fo.f(); // FinalType::f is not virtual
Run Code Online (Sandbox Code Playgroud)
我想知道在这些情况下由于多态性而避免这种开销的最佳方法是什么.
高级构建的想法(如第二个片段所示)对我来说看起来并不好:BaseType可以被许多类继承,并且尝试向上转换为所有这些将是非常冗长的.
另一个想法可能是存储obj.f在一个函数指针(没有测试这个,不确定它会杀死运行时开销),但再次这个方法看起来并不完美:如上面的方法,它需要写更多代码,它将无法利用一些优化(例如:如果FinalType::f是一个内联函数,它不会被内联 - 但我想避免这种情况的唯一方法是向上obj转换为其最终类型.. .)
那么,还有更好的方法吗?
编辑: 嗯,当然这不会影响那么多.这个问题主要是要知道是否有事可做,因为看起来这个开销是免费的(这个开销看起来很容易被杀)我不明白为什么不这样做.
一个简单的关键字,用于小优化,如C99 restrict,告诉编译器一个固定类型的多态对象是我所希望的.
无论如何,只是回答评论,存在一点开销.看看这个特殊的极端代码:
struct Base { virtual void f(){} };
struct Final : public Base { void f(){} };
int main( ) { …Run Code Online (Sandbox Code Playgroud) c++ ×3
asp.net-mvc ×1
audit ×1
boolean ×1
c# ×1
graphics ×1
implicit ×1
jquery ×1
makefile ×1
ocaml ×1
opengl ×1
optimization ×1
polymorphism ×1
scala ×1
sql-server ×1
triggers ×1
types ×1
validation ×1