问题列表 - 第13615页

在STL map/set中end()是否必须是常量?

标准中的§23.1.2.8声明对set/map的插入/删除操作不会使对这些对象的任何迭代器无效(指向已删除元素的迭代器除外).

现在,考虑以下情况:您希望实现具有唯一编号节点的图形,其中每个节点具有固定数量(假设4个)邻居.利用上述规则,你可以这样做:

class Node {
    private:
        // iterators to neighboring nodes
        std::map<int, Node>::iterator neighbors[4];
        friend class Graph;
};

class Graph {
    private:
        std::map<int, Node> nodes;
};
Run Code Online (Sandbox Code Playgroud)

(编辑:由于Node第4行的不完整性(参见回复/评论),并非字面意思,但无论如何都沿着这些方向)

这很好,因为这样您就可以插入和删除节点而不会使结构的一致性失效(假设您跟踪删除并从每个节点的数组中删除已删除的迭代器).

但是,假设您还希望能够存储"无效"或"不存在"的邻居值.不用担心,我们可以使用nodes.end()...或者我们可以吗?是否存在某种保证,nodes.end()nodes.end()经过多次插入/删除后,上午8点将与下午10点相同?也就是说,我可以安全地==将作为参数接收的迭代器nodes.end()与Graph的某些方法进行比较吗?

如果没有,这会有效吗?

class Graph {
    private:
        std::map<int, Node> nodes;
        std::map<int, Node>::iterator _INVALID;
    public:
        Graph() { _INVALID = nodes.end(); }
};
Run Code Online (Sandbox Code Playgroud)

也就是说,我可以nodes.end()在构造时存储变量,然后每当我想将邻居设置为无效状态时使用此变量,或者将它与方法中的参数进行比较吗?或者有可能在某个地方,指向现有对象的有效迭代器将比较等于_INVALID

如果这也不行,有什么怎么办留有余地无效邻居价值?

c++ iterator stl

34
推荐指数
3
解决办法
2554
查看次数

如何在Perl中保存正则表达式的匹配部分?

我想整理以下文本文件中的所有API:

DLL Name: msvcrt.dll
...
DLL Name: msvcrt.dll
...
DLL Name: KERNEL32.dll
...
DLL Name: WSOCK32.DLL
Run Code Online (Sandbox Code Playgroud)

我想到了类似的东西

$infostring = lc($infostring);
while ($infostring =~ /dll name:/g)
{
 print "found dll\n";
}
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,如何获取实际的dll名称或至少找到找到的字符串的位置?

regex perl

0
推荐指数
1
解决办法
3524
查看次数

每月和每天填充

我正在填写一个带有月份名称的组合框如下:`

        var engCulture = new CultureInfo("en-US");            
        cmbAmCul.Items.AddRange(engCulture.DateTimeFormat.MonthNames);
Run Code Online (Sandbox Code Playgroud)

什么是正确的方法:

  1. 消除12个月名称后的空白条目.
  2. 根据选定的月份,在一天(1-31 || 1-28 || 1-30)填充另一个组合框?

c#

0
推荐指数
1
解决办法
2060
查看次数

如何解析以字符串形式给出的数学表达式并返回一个数字?

Java中是否有一种方法可以从这个数学表达式中获得结果:

String code = "5+4*(7-15)";
Run Code Online (Sandbox Code Playgroud)

另一方面,解析算术表达式的最佳方法是什么?

java string math parsing expression

39
推荐指数
5
解决办法
8万
查看次数

强制升级在初始安装期间修改的文件

我正在为基于WiX的安装程序进行升级功能.

作为安装的一部分,我们正在安装web.config文件,然后使用自定义操作更新文件中的连接字符串.

但是,当我们运行升级时,这会导致问题.我们希望在InstallFinalize之后安排RemoveExistingProducts,因为这在不删除和重新安装未更改的文件方面效率最高.但是,当Windows Installer尝试确定是否应该更新它时,这会留下原始的web.config文件.由于它的上次修改日期比其创建日期更新,因此Windows Installer决定不更新它(请参阅Windows Installer使用的版本控制规则).但我们需要更新它.

一个显而易见的解决方案是将RemoveExistingProducts的调度更改为InstallValidate之后 - 但这样效率很低,而且,我认为如果我们需要这样做,我认为它不会让我们有机会从现有文件迁移设置.

还有其他想法吗?

windows-installer wix upgrade

11
推荐指数
1
解决办法
7751
查看次数

绝对是编程的开始

我在网络和Web开发方面工作了10年,并且一直对编程很感兴趣.当我在学校时,我开始使用Basic,(至今我自己)当时的其他语言是Cobol&Fortran,我应该从哪里开始2009年?是C +或C++的好地方?启动Java或.net更好吗?我需要来自Coders,Programmers和开发人员的一些指导,他们可以指出我正确的方向.技术在眨眼之间发生变化,我想开始学习和理解相关代码是一个很好的起点.

c++

2
推荐指数
4
解决办法
875
查看次数

php中的字符格式

抱歉我无法登录声明ID有服务器问题(我通常是Arthur Gibbs)

当有奇怪的字符时,我数据库中的数据当前会输出...
这只是一个例子

我得到了De&#8730;ilscrat™
什么:我想要什么:De?ilscrat™

似乎其他人系统正在将一些字符翻译成字符代码.

所以我想知道的是:

是否有一个函数可以扩展字符串中的charecter代码?
转动FUNCTION(De&#8730;ilscrat™) >>> De?ilscrat™.

html php character-reference

0
推荐指数
1
解决办法
189
查看次数

测试驱动开发演示

我需要在TDD上做一个简短的演示,以便在公司会议上展示.它需要是一个在线谈话,不超过35分钟.你有什么建议?

tdd video

8
推荐指数
1
解决办法
2112
查看次数

gcc和g ++命令提示符编译和链接

嘿那里,我在编译和链接命令提示符(windows xp)时遇到了一个小问题.我编译或链接的每个.c文件和.cpp文件必须与gcc(C:\ Program Files\gcc\bin)位于同一目录中,并且很难在所有这些gcc相关文件及其中跟踪我的文件也很讨厌:).我的问题是如何使用命令提示符在桌面文件夹中编译文件?

我经常去:

c:\program files\gcc\bin> gcc -c test.c test2.c

当我的源文件在bin中时.

当文件位于其他位置时,我将使用什么命令进行编译.

command-line gcc cmd compilation

5
推荐指数
1
解决办法
3903
查看次数

如何找到窗口的SW_SHOW/SW_HIDE状态

我正在尝试确定已使用CWnd :: ShowWindow()隐藏或启用的窗口控件的可见性.(或:: ShowWindow(hWnd,nCmdShow))

我不能简单地用:: IsWindowVisible(HWND)作为控制是在标签片,其自身可以被切换出,引起IsWindowVisible返回FALSE.

有没有办法获得SW_SHOW/HIDE(或其他)窗口状态或我是否需要使用ShowWindow()的重新调整值并相应地重置?

编辑:当控件被启用(或禁用)显示,但可能当前不可见,因为选项卡被切换,我认为它的SW_SHOW状态将保持不变,即使窗口本身实际上没有切换如果我对我的期望不太现实,那就没事了.

所以我真的在寻找'可以显示此窗口/控件'

c++ winapi mfc show-hide

14
推荐指数
2
解决办法
2万
查看次数