假设我想在C++中实现一个数据结构来存储面向图.由于STL容器,Arcs将存储在节点中.我希望用户能够以类似STL的方式迭代节点的弧.
我遇到的问题是我不希望在Node类(实际上是一个抽象基类)中公开我将在具体类中实际使用的STL容器.因此,我不希望我的方法返回std :: list :: iterator或std :: vector :: iterator ...
我试过这个:
class Arc;
typedef std::iterator<std::random_access_iterator_tag, Arc*> ArcIterator; // Wrong!
class Node {
public:
ArcIterator incomingArcsBegin() const {
return _incomingArcs.begin();
}
private:
std::vector<Arc*> _incomingArcs;
};
Run Code Online (Sandbox Code Playgroud)
但这不正确,因为vector :: const_iterator不能用于创建ArcIterator.那么这个ArcIterator可以是什么?
我发现这篇论文关于STL的自定义迭代器,但它没有帮助.我今天一定有点沉重......;)
我用一个字节来存储一些像标志10101010,我想知道如何验证特定位为1或0.
重新启动(冷启动)后,我们的应用程序比启动一次(热启动)需要更多的时间.
大多数(如果不是全部)差异似乎来自加载DLL,当DLL在缓存的内存页面中时,加载速度要快得多.我们尝试使用ClearMem来模拟重新启动(因为它比实际重新启动耗时少得多)并得到了混合结果,在某些机器上它似乎非常一致地模拟重启,而在某些机器上则没有.
总结我的问题是:
编辑:
澄清意见:
我忘了提到的一点是我们通过重新设置所有二进制文件来获得一些改进,因此加载器不必在加载时执行它.
为什么使用SOAP与前端进行通信不是一个好主意?例如,使用JavaScript的Web浏览器.
在Internet Explorer中,我可以使用clipboardData对象来访问剪贴板.我怎样才能在FireFox,Safari和/或Chrome中执行此操作?
我发现了一篇关于如何通过调用来提升用C++编写的COM对象
的文章CoCreateInstanceAsAdmin.但是我无法找到或做的是将.NET(c#)应用程序的一个组件实现为COM对象,然后调用该对象来执行需要UAC提升的任务.MSDN将此文档记录为管理COM对象模型.
我知道以管理员身份启动应用程序(或其他应用程序)是可行且非常容易的,以便在单独的过程中执行任务(例如参见Daniel Moth的帖子,但我正在寻找的是一种方式从同一个未提升的.NET可执行文件中做所有事情.当然,这样做会在新进程中生成COM对象,但是由于透明的编组,.NET COM对象的调用者不应该(也是很多)意识到这一点.
关于如何使用C#,C#项目,通过CoCreateInstanceAsAdminAPI 实现C#编写的COM对象的任何想法都会非常有用.所以我真的很想学习如何在C#中编写COM对象,然后我可以通过COM高程API从C#调用它.
不要紧,升高的COM对象是否在同一进程中运行.我只是不想要提升整个应用程序; 我想要提升将执行代码的COM对象.如果我能写出一些东西:
// in a dedicated assembly, marked with the following attributes:
[assembly: ComVisible (true)]
[assembly: Guid ("....")]
public class ElevatedClass
{
public void X() { /* do something */ }
}
Run Code Online (Sandbox Code Playgroud)
然后让我的主应用程序ElevatedClass通过CoCreateInstanceAsAdmin调用实现.但也许我只是在做梦.
有没有办法确定给定正则表达式中有多少个捕获组?
我希望能够做到以下几点:
def groups(regexp, s):
""" Returns the first result of re.findall, or an empty default
>>> groups(r'(\d)(\d)(\d)', '123')
('1', '2', '3')
>>> groups(r'(\d)(\d)(\d)', 'abc')
('', '', '')
"""
import re
m = re.search(regexp, s)
if m:
return m.groups()
return ('',) * num_of_groups(regexp)
Run Code Online (Sandbox Code Playgroud)
这允许我做的事情:
first, last, phone = groups(r'(\w+) (\w+) ([\d\-]+)', 'John Doe 555-3456')
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何实施num_of_groups.(目前我只是解决它.)
编辑:按照rslite的建议,我换成re.findall了re.search.
sre_parse 看起来像是最强大和最全面的解决方案,但需要树遍历并且看起来有点沉重.
MizardX的正则表达似乎覆盖了所有基础,所以我将继续使用它.
我们有一台生产机器,并试图在我们的Web应用程序上慢慢引入一些3.0及更高版本的功能.3.5已安装,但我想升级到SP1,我只想知道它是否需要重新启动机器,以便我可以安排一些停机时间.
谢谢!
编辑:所以它确实需要重新启动,谢谢大家的答案...但托管公司没有给我们这样做的权利... LOL
我在这里有很多不同的Web应用程序和站点,大约10-15个.
当我将VS2008连接到任何进程(很可能是Nunit.exe或类似的东西)时,我在解决方案中为每个网站/应用程序获得一个Cassini进程.有没有一种快速的方法来摆脱VS中的这种行为或我是否必须将它们连接到IIS?
我习惯使用atlas,首选(据我所知)方法是使用xml注释,例如:
/// <summary>
/// Method to calculate distance between two points
/// </summary>
///
/// <param name="pointA">First point</param>
/// <param name="pointB">Second point</param>
///
function calculatePointDistance(pointA, pointB) { ... }
Run Code Online (Sandbox Code Playgroud)
最近我一直在寻找其他第三方JavaScript库,我看到的语法如下:
/*
* some comment here
* another comment here
* ...
*/
function blahblah() { ... }
Run Code Online (Sandbox Code Playgroud)
作为奖励,如果有任何可以读取"首选"评论风格的JavaScript API生成器,请告诉我.