问题列表 - 第5468页

在C++函数调用中使用increment运算符是否合法?

关于以下代码是否是合法的C++ ,这个问题一直存在争议:

std::list<item*>::iterator i = items.begin();
while (i != items.end())
{
    bool isActive = (*i)->update();
    if (!isActive)
    {
        items.erase(i++);  // *** Is this undefined behavior? ***
    }
    else
    {
        other_code_involving(*i);
        ++i;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是erase()将使有问题的迭代器无效.如果在i++评估之前发生这种情况,那么这样的增量i在技​​术上是未定义的行为,即使它似乎与特定的编译器一起使用.辩论的一方面说,在调用函数之前,所有函数参数都已完全评估.另一方说,"唯一的保证是i ++将在下一个语句之前和使用i ++之后发生.无论是在擦除(i ++)之前还是之后都依赖于编译器."

我打开这个问题,希望能够解决这个问题.

c++ standards function

43
推荐指数
3
解决办法
1万
查看次数

Python中的廉价异常处理?

我在前面的回答中读到异常处理在Python中很便宜所以我们不应该进行预条件检查.

我以前没有听说过这个,但我对Python比较陌生.异常处理意味着动态调用和静态返回,而if语句是静态调用,静态返回.

如何做好检查是坏的,try-except好的,似乎是另一种方式.谁可以给我解释一下这个?

python performance exception-handling

29
推荐指数
5
解决办法
7521
查看次数

如何只在某些实体组可以参与角色的情况下模拟复杂的角色关系?

假设我必须为餐馆的餐点建模.

一顿饭可以包含几个"组件":

  1. (薯条或米饭或楔子)
  2. AND(六种不同饮料中的一种)
  3. AND(七种不同酱中的一种或两种,或者根本没有)

另一餐可以包括:

  1. (沙拉或米饭)
  2. 和(大蒜或没有大蒜)

进一步的膳食可以包括:

  1. 只是炸薯条

  2. 只是一种饮料

  3. 只是......

我该如何建模呢?(UML,实体关系,代码,......无论你能解释得最好)

如果你知道我想要执行的一些任务,也许会有所帮助,所以:

  • 允许客户先选择餐点并显示所有剩余的"附加组件".
  • 从组件列表中检测膳食.例如,如果顾客订购了薯条,酱汁和饮料,则应该可以从第一个例子中检测出餐食.

我已经考虑将所有组件分成文章,然后添加某种角色映射来标记"薯条"作为"芝士汉堡","炸肉排","......"的补充,但后来我想知道,我怎么能模拟多个添加-ons,可选附加组件,n-out-of-m附加组件......

我希望你能帮帮我...

oop modeling model

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

多个目录中的头文件:最佳实践

我是C Newb

我用动态语言(javascript,python,haskell等)编写了很多代码,但我现在正在为研究生院学习C,我不知道我在做什么.

问题

最初我使用makefile在一个目录中构建我的所有源代码,该代码运行得相当好.但是,我的项目正在增长,我想将源分成多个目录(单元测试,工具,核心等).例如,我的目录树可能如下所示:

.
|-- src
|   |-- foo.c
|   |-- foo.h
|   `-- main.c
`-- test
    `-- test_foo.c
Run Code Online (Sandbox Code Playgroud)

test/test_foo.c使用src/foo.csrc/foo.h.使用makefile,构建它的最佳/标准方法是什么?优选地,将存在用于构建项目的一个规则和用于构建测试的规则.

注意

我知道还有其他方法可以做到这一点,包括autoconf和其他自动解决方案.但是,我想了解发生了什么,并且能够从头开始编写makefile,尽管它可能不切实际.

任何指导或提示将不胜感激.谢谢!

[编辑]

所以到目前为止给出的三个解决方案如下:

  • 将全局使用的头文件放在并行include目录中
  • 使用声明中的路径,#include#include "../src/foo.h"
  • 使用-I开关通知编译器包含位置

到目前为止,我喜欢-I交换机解决方案,因为它不涉及在目录结构更改时更改源代码.

c makefile header-files

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

如何将对象的成员函数作为std算法的unary_function调用?

我有一个看起来像这样的课程.

class A 
{
public:
    void doSomething();
}
Run Code Online (Sandbox Code Playgroud)

我有这些类的数组.我想在数组中的每个项目上调用doSomething().使用算法标题最简单的方法是什么?

c++ stl

4
推荐指数
1
解决办法
414
查看次数

NUnit测试应用程序,而不是环境或数据库

我想更好地使用NUnit来测试我编写的应用程序,但我经常发现我编写的单元测试有一个直接链接到开发机器上的环境或底层数据库.

让我举个例子.

我正在编写一个单独负责重写字符串的类,该字符串已由另一个应用程序存储在注册表中.密钥存储在HKCU\Software\CustomApplication\IniPath中.

我最终写的测试看起来像这样;

[Test]
public void GetIniDir()
{
    RegistryReader r = new RegistryReader();
    Assert.AreEqual(@"C:\Programfiles\CustomApplication\SomeDir", r.IniDir);
}
Run Code Online (Sandbox Code Playgroud)

但问题是字符串@"C:\ Programfiles\CustomApplication\SomeDir"现在真的是正确的.明天它可能已经改为@"C:\ Anotherdir\SomeDir",突然间,即使代码没有改变,也会破坏我的单元测试.

当我创建一个对数据库执行CRUD操作的类时,也会出现此问题.数据库中的数据可以随时更改,这反过来会使测试失败.因此,即使我的类完成了预期的操作,它也会失败,因为数据库会返回我最初编写测试时所拥有的更多客户.

[Test]
public void GetAllCustomersCount()
{
    DAL d = new DAL();
    Assert.AreEqual(249, d.GetCustomerCount());
}
Run Code Online (Sandbox Code Playgroud)

你们有没有关于编写不依赖周围环境的测试的技巧?

c# nunit unit-testing

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

MySQL:检查用户是否存在并删除它

没有标准的方法来检查MySQL用户是否存在并且基于该用户丢弃它.这有什么变通方法吗?

编辑:我需要一个直接的方式来运行它而不会抛出错误,
例如

DROP USER test@localhost; :    
Run Code Online (Sandbox Code Playgroud)

mysql database

79
推荐指数
5
解决办法
10万
查看次数

如何修复Postgres,以便在突然关机后启动?

由于突然断电,PostGres在我的本地计算机上运行的服务器突然关闭.重新启动后,我尝试重新启动postgres,我收到此错误:

$ pg_ctl -D /usr/local/pgsql/data restart

pg_ctl: PID file "/usr/local/pgsql/data/postmaster.pid" does not exist
Is server running?
starting server anyway
server starting
$:/usr/local/pgsql/data$ LOG:  database system shutdown was interrupted at 2009-02-28 21:06:16 
LOG:  checkpoint record is at 2/8FD6F8D0
LOG:  redo record is at 2/8FD6F8D0; undo record is at 0/0; shutdown FALSE
LOG:  next transaction ID: 0/1888104; next OID: 1711752
LOG:  next MultiXactId: 2; next MultiXactOffset: 3
LOG:  database system was not properly shut down; automatic recovery in progress
LOG: …
Run Code Online (Sandbox Code Playgroud)

postgresql recovery

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

参数名称前面的'&'

这是一个快速而毫无疑问的简单问题.我是PHP的新手,正在浏览一些现有的代码.我试图在谷歌上找到我的问题的答案,但无济于事.

有人可以让我知道参数$ var之前的'&'符号是什么?

function setdefault(&$var, $default="")
{
  if (! isset($var))
  {
    $var = $default;
  }
}
Run Code Online (Sandbox Code Playgroud)

php parameters

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

部署DotNetNuke并将ASP.NET应用程序分开 - 可能的问题?

我正在积极主动地试图阻止由此产生的任何潜在问题.情况是我们正在为客户开发一个ASP.NET应用程序,它将处理客户的在线订购.这个应用程序将使用他们当前的WinForms应用程序使用的相同数据库(这里没有真正的问题).

与此同时,我们正在使用DotNetNuke为他们开发一个新的前端网站.DotNetNuke应用程序将简单地链接到ASP.NET应用程序,以便客户提交订单(无需他们来回通信等)

计划是在客户端位置的同一个盒子上托管两个应用程序.我正在寻找的是潜在的问题或设置提示,可以防止两个应用程序之间可能发生冲突(web.config冲突等)是否存在同一位置托管,如何设置IIS等问题,等等.?

如果还有任何可用的外部资源可以解决这个问题,请随时链接它们.

asp.net deployment dotnetnuke

6
推荐指数
1
解决办法
2644
查看次数