我想知道STL是否有这方面的支持:
说我有这样一个类:
class Person
{
public:
int getAge() const;
double getIncome() const;
..
..
};
Run Code Online (Sandbox Code Playgroud)
和矢量:
vector<Person*> people;
Run Code Online (Sandbox Code Playgroud)
我想按照他们的年龄对人的矢量进行排序:我知道我可以通过以下方式进行:
class AgeCmp
{
public:
bool operator() ( const Person* p1, const Person* p2 ) const
{
return p1->getAge() < p2->getAge();
}
};
sort( people.begin(), people.end(), AgeCmp() );
Run Code Online (Sandbox Code Playgroud)
是否有一个不那么冗长的方法来做到这一点?仅仅因为我想基于'属性'进行排序而必须定义整个类似乎有点过分.这样的事可能吗?
sort( people.begin(), people.end(), cmpfn<Person,Person::getAge>() );
Run Code Online (Sandbox Code Playgroud) 这个问题让我想到了Java和.NET等高级开发框架中的线程局部存储.
Java有一个ThreadLocal<T>类(也许还有其他构造),而.NET有数据槽,很快就有ThreadLocal<T>了它自己的类.(它也有ThreadStaticAttribute,但我对成员数据的线程局部存储特别感兴趣.)大多数其他现代开发环境为语言或框架级别提供了一种或多种机制.
线程局部存储解决了什么问题,或者线程局部存储提供了什么优势,而不是创建单独的对象实例以包含线程本地数据的标准面向对象的习惯用法?换句话说,这是怎么回事:
// Thread local storage approach - start 200 threads using the same object
// Each thread creates a copy of any thread-local data
ThreadLocalInstance instance = new ThreadLocalInstance();
for(int i=0; i < 200; i++) {
ThreadStart threadStart = new ThreadStart(instance.DoSomething);
new Thread(threadStart).Start();
}
Run Code Online (Sandbox Code Playgroud)
优于此?
// Normal oo approach, create 200 objects, start a new thread on each
for(int i=0; i < 200; i++) {
StandardInstance standardInstance …Run Code Online (Sandbox Code Playgroud) 我有一堆绝对定位的图像,我想能够点击一个按钮,让它们全部动画到它们通常在页面上的位置,如果它们有位置:relative.
所以甚至可以从位置:绝对到位置动画:相对于jquery?
这就是我所拥有的:
$(".change_layout").click(function(){
$(".book_img").animate({position:'relative', top:'0px', left:'0px'}, 1000)
})
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:key name="categories" match="Category" use="." />
<xsl:key name="clients" match="Category" use ="Category/Client" />
<xsl:template match="/">
<ul id="red" class="treeview-red">
<xsl:for-each select="/Promotions/Promotion/Category[
generate-id(.) = generate-id(key('categories', .)[1])
]">
<xsl:variable name="cname" select="." />
<li>
<span>
<xsl:value-of select="$cname" />
</span>
<xsl:for-each select="/Promotions/Promotion[Category=$cname]">
<ul>
<li>
<span>
<xsl:value-of select="Client" />
</span>
</li>
<ul>
<li>
<span>
<xsl:value-of select="Title" />
</span>
</li>
</ul>
</ul>
</xsl:for-each>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我的XML:
<Promotions>
<Promotion>
<Category>Arts & Entertainment</Category>
<Client>Client 1</Client>
<Title>Get your Free 2</Title>
</Promotion>
<Promotion> …Run Code Online (Sandbox Code Playgroud) 是否有人知道这样做的任何样本或开源代码?或者是一篇解释如何做的文章?
Apple有相当多的示例代码可以在其他应用程序中打开Web地址.但我找不到任何应用程序要求其他应用程序打开存储在手机上的文件的示例.
谢谢.
我有一个使用基于Javascript的规则引擎的应用程序.我需要一种方法将常规直引号转换为卷曲(或智能)引号.只做一个string.replacefor 是很容易的["],只有这只会插入一个卷曲引用的情况.
我能想到的最好的方法是用左边的卷曲引号替换第一次出现的引用,用左边的代码替换每个其他的引用,其余的右边卷曲.
有没有办法使用Javascript实现这一目标?
我在log4j.xml中列出哪个记录器来捕获未处理的struts 2异常?
我在struts.xml中声明了以下代码:
<package name="default" extends="struts-default">
<interceptor-stack name="defaultStack">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="exception">
<param name="logEnabled">true</param>
<param name="logCategory">error.unhandled</param>
<param name="logLevel">WARN</param>
</interceptor-ref>
</interceptor-stack>
</package>
Run Code Online (Sandbox Code Playgroud)
在我的log4j.xml文件中,我声明了以下记录器:
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p [%c] - %C{1}.%M(%L) | %m%n"/>
</layout>
</appender>
<logger name="error.unhandled">
<level value="DEBUG"/>
<appender-ref ref="CONSOLE" />
</logger>
Run Code Online (Sandbox Code Playgroud)
但是,当Struts抛出异常时,log4j没有正确记录它.我知道我的log4j.xml正在被正确解析,因为我可以手动创建一个带有名为"error.unhandled"的记录器的java类,并直接向它写入ERROR级别的消息.一位同事还建议我应该尝试捕获log4j.logger.error.unhandled记录器,但这也不起作用.
Struts 2使用哪个记录器用于异常拦截器?
我刚开始使用Swiz,看起来Swiz强迫你创建具有弱封装的类.Swiz要求所有事件处理程序都是公开的,以便调解事件.
假设组件"A"调度了一些事件,我想在组件"B"中监听这些事件.传统上,我只是在'B'中的'A'上添加事件监听器,并且'B'中的所有事件处理程序都可以保持私有.但是,如果我正在使用Swiz,我需要制作所有处理程序,调解事件,公开.
我在这里遗漏了什么,有没有办法绕过这个问题.我真的,不想污染我班级的公共界面.
谢谢.
这是我的代码
<form method="post">
<input name="hash" type="text" id="hash" style='width: 30%;'/>
<input name="Crack!" type="submit" value="Crack!" onfocus="if(this.blur)this.blur()"/>
</form>
<?php
if(isset($_POST['Crack!'])){
$hash = $_POST['hash'];
$xml = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash");
$status = $xml->data->status;
if ($status = "Success"){
$plain = $xml->data->result;
}elseif ($status = "Hash not found"){
$plain = "Not Found"; }
?>
<table>
<tr>
<td><?php echo "gdataonline.com: "; ?></td>
<td><?php echo "$plain"; ?></td>
</tr>
</table>
<?php
echo "<pre>";
var_dump($xml);
echo "</pre>";
} //if submit
?>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我根本无法回应$ plain.它似乎甚至无法读取它.
对不起,如果这听起来很简单,但我正在寻找一些帮助来改善我的代码:)
所以我目前有以下实现(我也写过):
public interface IOptimizer
{
void Optimize();
string OptimizerName { get; }
}
public abstract AbstractOptimizer : IOptimizer
{
public void Optimize()
{
// General implementation here with few calls to abstract methods
}
}
public abstract AbstractPriorityOptimizer : AbstractOptimizer
{
// Optimize according to priority criteria.
string Name
{
get { return "Priority Optimizer"; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有技术特定的具体课程:
TechnologyXPriorityOptimizer : AbstractPriorityOptimizer
TechnologyYPriorityOptimizer : AbstractPriorityOptimizer
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试添加一个通用优化器,一个优化优先级以外的条件的优化器,所以我的尝试:
public abstract AbstractGenericOptimizer : AbstractOptimizer
{
// Optimize according to a generic criteria. …Run Code Online (Sandbox Code Playgroud) java ×2
.net ×1
apache-flex ×1
attributes ×1
c# ×1
c++ ×1
frameworks ×1
html ×1
iphone ×1
javascript ×1
jquery ×1
log4j ×1
oop ×1
php ×1
position ×1
quotes ×1
regex ×1
simplexml ×1
smart-quotes ×1
sorting ×1
stl ×1
struts2 ×1
swiz ×1
thread-local ×1
xml ×1
xsl-grouping ×1
xslt ×1