char* func( char* a, const char* b )
{
while( *a )
{
char *s = a, *t = b;
while( (*s++ == *t++) && *s && *t );
if( *t == 0 )
return a;
a++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编写上面的代码是为了在字符串"a"中搜索字符串"b"的第一个实例.
上述程序有问题吗?
有没有办法提高它的效率?
我正在尝试连接一个新事件,但出于某种原因,"Changed"总是评估为null
public class MyTreeViewItem : INotifyPropertyChanged
{
private MyTreeViewItem _parent;
public MyTreeViewItem(MyTreeViewItem parent)
{
_parent = parent;
}
private bool _checked;
public bool Checked
{
get
{
return _checked;
}
set
{
if (value != _checked)
{
_checked = value;
OnChanged("test");
OnPropertyChanged("Checked");
}
}
}
public event EventHandler Changed;
public ObservableCollection<MyTreeViewItem> Children { get; set; }
// Invoke the Changed event; called whenever list changes
protected virtual void OnChanged(string test)
{
if (Changed != null)
Changed(this, null);
}
Run Code Online (Sandbox Code Playgroud)
订阅代码(PropertyChanged Works,Changed没有) …
我有一个看起来像这样的函数:
// Fetch 1 MB of data
void GetData(std::vector<char> & outData);
Run Code Online (Sandbox Code Playgroud)
1MB是夸大的,但我只是想说明最好避免不必要的副本.
如果我添加这个重载:
std::vector<char> GetData()
{
std::vector<char> result;
GetData(result);
return result;
}
Run Code Online (Sandbox Code Playgroud)
那么RVO有多大可能性呢?
我想让这个测试通过 - 任何人都知道如何做到这一点?
public class Something
{
public string Name {get; set}
}
public interface IWithId
{
public Guid Id {get; set}
}
public class IdExtender
{
public static Object Extend(object toExtend)
{
...?
}
}
public class Tests
{
[Test]
public void Should_extend_any_object()
{
var thing = new Something { Name = "Hello World!"};
var extended = IdExtender.Extend(thing);
Assert.IsTrue(extended is IWithId);
Assert.IsTrue(extended.Id is Guid);
Assert.IsTrue(extened.Name == "Hello World!");
}
}
Run Code Online (Sandbox Code Playgroud)
我猜这样的事情可以用城堡动态代理,林福等完成......但是怎么样?
我正在写一个C程序.我想要一个我可以作为char访问的变量,但我也可以访问特定的位.我以为我可以使用像这样的联盟......
typedef union
{
unsigned char status;
bit bits[8];
}DeviceStatus;
Run Code Online (Sandbox Code Playgroud)
但编译器不喜欢这个.显然你不能在结构中使用位.那么我该怎么做呢?
我确信这个概念已经出现过,但我找不到一个好的,简单的答案.使用try/finally是一种处理多个返回函数的坏方法吗?比如我有
try:
if x:
return update(1)
else:
return update(2)
finally:
notifyUpdated()
这似乎比在临时变量中存储update()命令并返回它更好.
作为我的一个项目的一部分,有"BeforeBuild"任务最终生成一些文件.特别是,它将一个小的静态类(在项目中包含为"不编译")编译成它自己的可执行文件,然后执行它,传入一个外部输入文件,输出一个新生成的类,包含在项目中.
我将它编程为将中间文件放在项目$(OutDir)中,但发现在"Rebuild"(最终是"Clean")中,这些文件没有被拾取.经过一番思考后,我意识到最终生成的类放在$(ProjectDir)中也应该在"Clean"上删除.
对Microsoft.Common.targets的一些调查显示,中间路径(obj\build\assembly.FileListAbsolute.txt)中有一些"主列表",它们被查询要删除的文件.
是否有一些标准方法将我的新文件添加到MSBuild中的此列表中以清除它们,或者这种事情是否适合"BeforeClean"(或"AfterClean")目标覆盖?
在我的Rails应用程序中,我有一个has_many关系的类.为了提高效率,我想做一些直接SQL来一次更新数据库中的许多行,然后我想将has_many关系标记为不再有效.如果以后的代码访问has_many关系,我希望它重新加载数据.但我显然想跳过SQL,除非有必要.
例如:
class Student
has_many courses # may have a :condition clause or some such
def some_method
# For some reason, we want to change all courses in here, not
# just a single row.
ActiveRecord::Base.connection.execute("UPDATE courses SET location = #{new_location}")
# Not sure if we'll later do anything with self.courses, so I need to invalidate
# that relationship. Could do self.courses.reload right here, but I don't want to
# do the SQL if it isn't necessary; the cache only …
Run Code Online (Sandbox Code Playgroud) 我在项目中使用了一些未签名的库.因为我的应用程序是强签名的,所以库也必须如此.
我用以下方式签署这些库:
"%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\Bin\ildasm.exe" /nobar /all /out=library.il library.dll
"%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ilasm.exe" /dll /key=MyKey.snk library.il
Run Code Online (Sandbox Code Playgroud)
问题是任何元数据(例如版本号)都会在现在签名的DLL中丢失.这是一个问题,因为现在库之间的某些依赖关系被破坏了.如何保留版本号而不需要实际编译这些库的源代码?
UPDATE
它实际上是一个显示此问题的特定DLL,我发现它是使用ILMerge构建的.也许这就是问题所在.需要明确的是:ILMerge生成的DLL确实具有正确的元数据,只有在反汇编和重组后,元数据才会消失.
更新2
我在Reflector中打开了DLL,看起来至少版本号仍在那里.我一直在使用Windows资源管理器中的文件属性对话框/详细信息选项卡进行检查.所以我认为这是缺少的清单.
在R中,我有两个向量:
a <- c(1, 2, 3, 4)
b <- c(NA, 6, 7, 8)
Run Code Online (Sandbox Code Playgroud)
如何找到两个向量的元素均值,删除NA,没有循环?即我想得到的矢量
(1, 4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
我知道这个功能mean()
,我知道这个论点na.rm = 1
.但我不知道如何把事情放在一起.可以肯定的是,实际上我有数千个带有NA的向量出现在不同的地方,因此任何依赖于维度的解决方案都不起作用.谢谢.