我更喜欢两种方式:
void copyVecFast(const vec<int>& original)
{
vector<int> newVec;
newVec.reserve(original.size());
copy(original.begin(),original.end(),back_inserter(newVec));
}
void copyVecFast(vec<int>& original)
{
vector<int> newVec;
newVec.swap(original);
}
Run Code Online (Sandbox Code Playgroud)
你怎么做呢?
我看起来应该是一个非常简单的问题,但事实证明它比我想象的要困难得多.这是问题所在:
我有一个相当大的图像序列,由编号的帧组成(Maya的输出,它的价值).图像目前采用Targa(.tga)格式,但如果重要的话,我可以将它们转换为PNG或其他任意格式.重要的是,他们有一个alpha通道.
我想要做的是以编程方式将它们变成视频剪辑.格式并不重要,但它需要无损并具有alpha通道.Quicktime容器中的未压缩视频可能是理想的.
我最初的想法是ffmpeg,但是在浪费了大部分时间之后,它似乎根本没有对alpha通道的支持.我要么缺少某些东西,要么底层的libavcodec不会这样做.
那么,这里的正确方法是什么?像ffmpeg这样的命令行工具会很好,但是在Windows上运行并且可以从脚本调用的任何解决方案都可以.
注意:在视频中使用alpha chanel实际上并不是那么罕见,如果你想将它合成在另一个视频片段或静止图像之上,它真的很有用.据我所知,未压缩的视频,Quicktime动画编解码器和Sorenson Video 3编解码器都支持透明度,我也听说过H.264.我们真正谈论的是32位色深,这得到了广泛支持; Quicktime .mov文件和Windowss .avi文件都可以处理它,也可能更多.
Quicktime Pro非常乐意将图像序列转换为32位.mov文件.点击导出,将颜色深度更改为"百万种颜色+",选择动画编解码器,将质量提高到100,然后就是 - 无损压缩视频,带有alpha字符,并且自编解码器以来它几乎可以在任何地方播放自1.0版以来一直是Quicktime的一部分.问题是,Quicktime Pro没有任何类型的命令行界面(至少在Windows上).ffmpeg支持使用Quicktime Animation编解码器(它称为qtrle)进行编码,但它只支持24位的位深度.
问题是找不到支持Alpha通道的视频格式.Quicktime Animation是理想的,但即使是未压缩的视频也应该可以使用.问题是找到一个支持它的工具.
cis.statbib.org: script/console
Loading development environment (Rails 2.2.2)
Article.founc>> Article.count()
ActiveRecord::StatementInvalid: Could not find table 'article'
from /home/hadley/web/cis.statbib.org/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:29:in `table_structure'
from /home/hadley/web/cis.statbib.org/vendor/rails/activesupport/lib/active_support/core_ext/object/misc.rb:39:in `returning'
...
Run Code Online (Sandbox Code Playgroud)
但它似乎确实存在于数据库中:
db: sqlite3 development.sqlite3
SQLite version 3.2.8
sqlite> select count(*) from author;
168600
Run Code Online (Sandbox Code Playgroud)
我刚刚更新了所有的宝石,等等.出了什么问题?
请考虑以下代码:
UInt32 val = 1;
UInt32 shift31 = val << 31; // shift31 == 0x80000000
UInt32 shift32 = val << 32; // shift32 == 0x00000001
UInt32 shift33 = val << 33; // shift33 == 0x00000002
UInt32 shift33a = (UInt32)((UInt64)val << 33); // shift33a == 0x00000000
Run Code Online (Sandbox Code Playgroud)
它不会生成警告(关于使用大于32的班次),因此它必须是预期的行为.
实际上被放到生成的程序集中的代码(或者至少是Reflector对代码的解释)是
uint val = 1;
uint shift31 = val << 0x1f;
uint shift32 = val;
uint shift33 = val << 1;
uint shift33a = val << 0x21;
Run Code Online (Sandbox Code Playgroud)
IL(再次,使用Reflector)是
L_0000: nop
L_0001: ldc.i4.1
L_0002: stloc.0 …Run Code Online (Sandbox Code Playgroud) 一位朋友问我这个问题,我很难过:有没有办法制作一个匹配同一个字符序列的正则表达式?例如,匹配'aaa','bbb',但不是'abc'?
m|\w{2,3}|
Run Code Online (Sandbox Code Playgroud)
不会这样做,因为它匹配'abc'.
m|a{2,3}|
Run Code Online (Sandbox Code Playgroud)
不会做的伎俩,因为它不匹配'bbb','ccc'等.
我经常有类似这样的代码:
if (itm != null)
{
foreach (type x in itm.subItems())
{
//dostuff
}
}
//do more stuff
Run Code Online (Sandbox Code Playgroud)
在//do more stuff省略的情况下,很容易避免额外的foreach循环.通过使用适当的命令来扩展范围(取决于正在发生的事情,这通常意味着return声明或a continue statement).
这种类型的东西倾向于产生箭头代码.我目前有几种方法可以解决这个问题:
itm = itm == null ? itm.subItems() : emptyArraygotogoto丑陋和难以阅读,所以我不认为这是一个有效的解决方案.有人关心哪些方法被认为更可取?
我想在运行时找到ActiveRecord类的关联...
我们假设我有以下内容:
class Person < ActiveRecord::Base
has_many :chairs
has_many :pens
end
class Chair < ActiveRecord::Base
belongs_to :person
end
class Pen < ActiveRecord::Base
belongs_to :person
end
Run Code Online (Sandbox Code Playgroud)
如何在运行时发现Person"有很多"椅子和笔,反之亦然?我正在寻找一个返回字符串数组的方法(如果存在这样的方法).即
Person.has_many_assocations
Run Code Online (Sandbox Code Playgroud)
会回来:
["chairs", "pens"]
Run Code Online (Sandbox Code Playgroud)
和
Pen.belongs_to_associations
Run Code Online (Sandbox Code Playgroud)
会回来:
["person"]
Run Code Online (Sandbox Code Playgroud)
我错过了这样存在的方法吗?
谢谢你的帮助.
我的问题是,我想用一个在JAVA中实现的通用解析器来解析不同类型的二进制文件.也许用一个配置文件来描述文件格式,该配置文件由解析器读取或创建根据某种解析规则解析文件的Java类.
我在互联网上搜索了很多,但在这个主题上几乎找不到任何东西.
我发现的只是处理编译器生成器(Jay,Cojen等)的事情,但我认为我不能用它们来生成解析二进制文件的东西.但我在这个假设上可能是错的.
是否有任何框架特别容易解析二进制文件,或者任何人都可以提示我如何使用解析器/编译器生成器这样做?
更新:我正在寻找可以编写配置文件的东西
file:
header: FIXED("MAGIC")
body: content(10)
content:
value1: BYTE
value2: LONG
value3: STRING(10)
Run Code Online (Sandbox Code Playgroud)
它会自动生成一些东西来解析以"MAGIC"开头的文件,然后是内容包的十倍(它本身由一个字节,一个长字节和一个10字节的字符串组成).
Update2:我发现了一些类似我正在寻找的东西," 构造 ",但遗憾的是这是一个Python框架.也许这有助于某人获得一个想法,我正在寻找什么.
我仍然是使用Autofac的新手,我在文档和示例中遗漏的一件事是如何使从Web应用程序中的不同位置轻松访问配置的容器.
我知道我可以使用Autofac控制器工厂自动解决构造函数注入控制器的依赖关系,但是你可能需要解决的其他东西如何还没有注入.
是否有一个我不知道的明显模式?
谢谢!
c# ×2
activerecord ×1
algorithm ×1
asp.net ×1
associations ×1
autofac ×1
binary-data ×1
bit-shift ×1
c++ ×1
codec ×1
command-line ×1
couchdb ×1
database ×1
ffmpeg ×1
file-io ×1
java ×1
parsing ×1
perl ×1
regex ×1
ruby ×1
sqlite ×1
stl ×1
transparency ×1
video ×1