我正在寻找一种有效的方法来确定在整数中设置的最低有效位的位置,例如对于0x0FF0,它将是4.
这是一个简单的实现:
unsigned GetLowestBitPos(unsigned value)
{
assert(value != 0); // handled separately
unsigned pos = 0;
while (!(value & 1))
{
value >>= 1;
++pos;
}
return pos;
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何挤出一些周期?
(注意:这个问题适合喜欢这类事情的人,而不是人们告诉我xyzoptimization是邪恶的.)
[编辑] 感谢大家的想法!我也学到了其他一些东西.凉!
好的,我已经检查了Environment.SpecialFolder,但是那里没有任何内容.
我想在C#中获取当前用户的主目录.(例如c:\documents and settings\user
在XP下,c:\users\user
在Vista下,/home/user
在Unix下.)
我知道我可以阅读环境变量来找到它,但我希望以跨平台的方式做到这一点.
有什么方法可以用.NET做这个(最好使用mscorlib)?
更新:好的,这是我最终使用的代码:
string homePath = (Environment.OSVersion.Platform == PlatformID.Unix ||
Environment.OSVersion.Platform == PlatformID.MacOSX)
? Environment.GetEnvironmentVariable("HOME")
: Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%");
Run Code Online (Sandbox Code Playgroud) 什么是一个相当于static_cast
用boost::shared_ptr
?
换句话说,我该如何重写以下内容
Base* b = new Derived();
Derived* d = static_cast<Derived*>(b);
Run Code Online (Sandbox Code Playgroud)
什么时候用shared_ptr
?
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = ???
Run Code Online (Sandbox Code Playgroud) 我正在寻找std :: map的最高键值(由比较运算符定义).
这是保证
map.rbegin()->first
Run Code Online (Sandbox Code Playgroud)
?
(我在反向迭代器上有点不稳定,在std :: map的实现中有多少自由度)
如果没有,请告知.我无法改变数据结构.
当我使用XML序列化程序序列化a时DateTime
,它使用以下格式编写:
<Date>2007-11-14T12:01:00</Date>
Run Code Online (Sandbox Code Playgroud)
当通过XSLT样式表传递它以输出HTML时,我该如何格式化?在大多数情况下,我只需要约会,当我需要时间时,我当然不希望那里有"有趣的T".
将用户控件或项目引用添加到VS 2008 C#项目时,我只能添加一个程序集配置.是否可以添加单独的配置,具体取决于容器项目的配置.
例如,我正在开发用户控件,我正在开发一个示例应用程序.我想添加用户控件,以便示例的调试版本将使用用户控件的调试版本,以及示例的发布版本和用户控件的版本构建.
有什么建议?
这是我第一次远离VC6的MFC应用程序,我觉得有点愚蠢:
如何添加OnInitDialog处理程序?(我知道如何手动添加它,但从长远来看这是一个痛苦).
双击对话框 - 没有.右键单击对话框 - 禁用"添加事件处理程序".属性 - 消息具有"正常"消息,但不具有WM_INITDIALOG属性 - 事件仅保存来自包含控件的通知在类视图中右键单击 - "添加..."仅具有函数和变量
划痕头
[编辑] d'oh - 它是MFC中的虚拟功能,但仍然......
是否有可能创建一个只接受字符串文字的构造函数(或函数签名),而不是例如char const *
?
是否有可能有两个可以区分字符串文字的重载char const *
?
C++ 0x会允许使用自定义后缀 - 但我正在寻找"早期"解决方案.
基本原理:避免在作为字符串文字给出时不会被修改的字符串的堆副本.
这些字符串直接转到API,期望const char *
没有任何处理.大多数调用确实使用不需要额外处理的文字,只在少数情况下构建它们.我正在寻找保留原生呼叫行为的可能性.
注意: - 因为它出现在答案中:有问题的代码根本不使用std::string
,但一个很好的例子是:
class foo
{
std::string m_str;
char const * m_cstr;
public:
foo(<string literal> s) : m_cstr(p) {}
foo(char const * s) : m_str(s) { m_cstr = s.c_str(); }
foo(std::string const & s) : m_str(s) { m_cstr = s.c_str(); }
operator char const *() const { return m_cstr; }
}
Run Code Online (Sandbox Code Playgroud)
结果:
(1)不能做到.
(2)我意识到我甚至不是在寻找一个文字,而是一个编译时常量(即"任何不需要复制的东西").
我可能会使用以下模式: …
我需要为HTML页面集合创建搜索索引.
我根本没有实现搜索索引的经验,所以任何一般信息如何构建一个,存储什么信息,如何实现高级搜索,如"整个短语",结果排名等.
我并不害怕自己构建它,虽然我很乐意重用现有的组件(或者使用一个开始使用原型).我正在寻找一个可以从C++访问的解决方案,最好不需要在运行时进行额外的安装.内容是静态的(因此聚合搜索信息是有意义的),但搜索可能必须累积来自多个此类存储库的结果.
不过,我可以做一些有根据的猜测:word ==> pages
为所有(相关的)单词创建一个地图,可以通过promincence(h1> h2> ...> <p>
)和接近顶部来为映射分配排名.高级搜索可以建立在最重要的是:搜索词组"homo sapiens"
可以列出包含所有页面"homo"
和"sapiens"
,然后扫描所有的网页返回,他们一起出现的位置.然而,有很多有问题的场景和未解决的问题,所以我正在寻找对应该是大量现有工作的参考,这些工作以某种方式逃脱了我的谷歌.
[编辑赏金]
我发现的最好的资源是这个以及那里的链接.我确实有一个实验系统的实施路线图,但是,我仍然在寻找:
c++ ×6
c# ×3
.net ×2
boost ×1
c ×1
constructor ×1
datetime ×1
html ×1
ide ×1
iterator ×1
mfc ×1
optimization ×1
overloading ×1
project ×1
shared-ptr ×1
standards ×1
static-cast ×1
stdmap ×1
visual-c++ ×1
xml ×1
xslt ×1