我有一些看起来像这样的代码:
std::set<int> s1, s2, out;
// ... s1 and s2 are populated ...
std::set_intersection(s1.begin(), s1.end(),
s2.begin(), s2.end(),
std::inserter(out, out.end()));
Run Code Online (Sandbox Code Playgroud)
如果插入到集合中的值紧跟在作为"提示"给出的迭代器之后,我已经读过插入可以在分摊的常量时间内完成.这在运行集合交集时显然是有益的,特别是因为写入的所有内容out已经按排序顺序排列.
我如何保证这种最佳性能?在创建时std::inserter,out是空的,out.begin() == out.end()所以我看不出它是否有任何区别,无论我指定out.begin()还是out.end()作为提示.但是,如果在插入每个元素时解释这一点begin(),那么我似乎不会获得最佳的算法性能.这可以做得更好吗?
新手问题:Python的2.6,Ubuntu的10.04,我可以同时导入pycurl并curl用于功能,前者有不同的名称(set_option对setopt).
这两个模块有什么区别?
这是我尝试使用CMake 2.8.2重现问题的设置:
/test.sh:
/CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
SET(CPACK_PACKAGE_NAME test)
SET(CPACK_PACKAGE_VERSION 1.0)
LIST(APPEND CPACK_GENERATOR RPM)
SET(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "test.sh")
INCLUDE(CPack)
Run Code Online (Sandbox Code Playgroud)
然后:
mkdir build && cd build && cmake .. && make package
Run Code Online (Sandbox Code Playgroud)
结果:
CPackRPM:警告:CPACK_RPM_POST_INSTALL_SCRIPT_FILE不存在 - 忽略
如何让构建系统知道我的文件test.sh?
我有一个在枚举上运行的函数,但第一项的函数应该有点不同,例如:
void start() {
List<string> a = ...
a.ForEach(DoWork);
}
bool isFirst = true;
private void DoWork(string s) {
// do something
if(isFirst)
isFirst = false;
else
print("first stuff");
// do something
}
Run Code Online (Sandbox Code Playgroud)
你会如何重构这个以避免那个丑陋的旗帜?
我的VS2010数据库部署在构建服务器上失败,构建服务器上安装了SQL Server 2008 R2.这是相关的输出:
创建Acme.Database ...
D:\ TeamCity\BuildAgent\Work\da2fc5ebd5805d44\src\Acme.Database\sql\Acme.Database.sql(30,0):错误SQL01268:.Net SqlClient数据提供者:消息5133,级别16,状态1,行1文件"C:\ Program Files\Microsoft SQL Server**MSSQL10.MSSQLSERVER**\MSSQL\DATA\Acme_Database_log.ldf"的目录查找失败,出现操作系统错误3(系统找不到指定的路径.).
D:\ TeamCity\BuildAgent\Work\da2fc5ebd5805d44\src\Acme.Database\sql\Acme.Database.sql(30,0):错误SQL01268:.Net SqlClient数据提供者:消息1802,级别16,状态1,行1 CREATE DATABASE失败.无法创建列出的某些文件名.检查相关错误.
批处理执行时发生错误.
实际路径在这里:
C:\ Program Files\Microsoft SQL Server**MSSQL10_50.MSSQLSERVER**\MSSQL\DATA\Acme_Database.mdf
我在数据库项目中找到的路径的唯一引用是在根文件夹中,该文件名为:
PRIMARY.Acme_Database.sqlfile.sql
它包含一个ALTER DATABASE语句,我更改为使用_50路径,但这并没有解决问题.
我不确定db项目为什么需要知道实际的数据库MDF文件在哪里位于哪里 - 我原以为它可以只通过TSQL连接到它,但无论如何我都无法让项目部署有这个错误,将不胜感激任何帮助.
我编写了一个依赖于其他服务器响应的脚本(使用wget来提取数据),我希望它始终在后台运行,毫无疑问.我知道一个解决方案就是编写一个包装脚本,它将使用附加的'&'调用我的脚本,但我想避免这种混乱.
有没有办法让bash(或zsh)脚本确定是否用./foo.sh&调用它,如果没有,退出并重新启动它本身?
谢谢大家!
我想知道如何设置CKEditor使用Javascript 的值?
我尝试了以下内容,但它们都不起作用......
document.[form name].[textarea name].value=data;
$('#textareaID').val(data);
Run Code Online (Sandbox Code Playgroud)
但是,这些都没有应用编辑器.有没有办法可以用编辑器做到这一点?
在OS X和Linux上列出Java 6中的目录内容时,我正在努力解决一个奇怪的文件名编码问题:这些File.listFiles()和相关的方法似乎以不同于系统其他部分的编码方式返回文件名.
请注意,不仅仅是这些文件名的显示导致了我的问题.我主要感兴趣的是将文件名与远程文件存储系统进行比较,因此我更关心名称字符串的内容而不是用于打印输出的字符编码.
这是一个演示程序.它创建一个带有Unicode名称的文件,然后打印出从直接创建的文件中获取的文件名的URL编码版本,以及在父目录下列出的相同文件(您应该在空目录中运行此代码).结果显示该File.listFiles()方法返回的不同编码.
String fileName = "Trîcky Nåme";
File file = new File(fileName);
file.createNewFile();
System.out.println("File name: " + URLEncoder.encode(file.getName(), "UTF-8"));
// Get parent (current) dir and list file contents
File parentDir = file.getAbsoluteFile().getParentFile();
File[] children = parentDir.listFiles();
for (File child: children) {
System.out.println("Listed name: " + URLEncoder.encode(child.getName(), "UTF-8"));
}
Run Code Online (Sandbox Code Playgroud)
这是我在系统上运行此测试代码时得到的结果.请注意%CC与%C3角色的表示.
OS X Snow Leopard:
File name: Tri%CC%82cky+Na%CC%8Ame
Listed name: Tr%C3%AEcky+N%C3%A5me
$ java -version
java version "1.6.0_20"
Java(TM) SE …Run Code Online (Sandbox Code Playgroud) java unicode normalization file-encodings unicode-normalization
对于不支持JavaScript的访问者,我将它们重定向到某个页面 - "js.html".
为此,我在所有文件中都有以下内容:
<noscript>
<meta http-equiv="Refresh" content="0;URL=js.html" />
</noscript>
Run Code Online (Sandbox Code Playgroud)
当然,这不会在XHTML中验证,因为必须放入noscript <body>.但是,当我将该代码放在我的文档正文中时,我得到另一个错误,因为元标记只能在该<head>部分中使用,所以我在这里陷入无限循环.
有没有办法进行验证?它适用于所有浏览器,所以这不是什么大问题,我只是想验证我的应用程序.
我正在查看一个代码块,无法理解该行发生了什么 - formValues.AllKeys.Contains("Email_" + i);它看起来应该是一个任务,但......
public ActionResult EditAdditionalLocations(int ID, int? count, FormCollection formValues)
{
...
for (int i = 0; i < _count; i++)
{
formValues.AllKeys.Contains("Email_" + i);
if (locations.Emails.Count > i)
{
locations.Emails[i] = formValues["Email_" + i];
}
else
{
locations.Emails.Add(formValues["Email_" + i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)