问题列表 - 第16318页

使用std :: copy插入STL队列

我想std::copy用于将元素插入到队列中,如下所示:

vector<int> v;
v.push_back( 1 );
v.push_back( 2 );

queue<int> q;

copy( v.begin(), v.end(), insert_iterator< queue<int> >( q, q.front() ) );
Run Code Online (Sandbox Code Playgroud)

但这无法编译,抱怨begin不是其中的一员std::queue.

注意:我也试过std::inserter了 - 这也失败了,这次说'reference'不是'std :: queue'的成员. std::back_inserter并且std::back_insert_iterator还失败,相同的错误.

我错过了一些明显的东西,还是insert_iterator只是不能使用队列?

c++ queue stl copy insert-iterator

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

TreeView在View模型中同步到SelectedItem

我在WPF TreeView控件之上有一个ViewModel.我希望ViewModel能够从TreeView中设置和读取SelectedItem.但是,TreeView的SelectedItem属性不可绑定.

我能够在后面的代码中设置和获取所选项(使用ItemContainerGenerator和TreeViewItem.IsSelected = true)但这会导致后面的代码和ViewModel之间的一些丑陋的通信.

有人有一个干净的解决方案吗?

wpf treeview selecteditem viewmodel

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

使用手动生成的脚本进行数据库更改

我的需求是相当基本的,我不想重建轮子.我喜欢编写我的数据库脚本并编写脚本以将其从一个版本更新到下一个版本,即001-create-tables.sql,002-alter-column.sql等.

我想要的是一个简单的工具命令行或MsBuild,它将查看数据库,查看数据库所处的版本(使用某些表约定)并运行编号大于当前数据库版本的文件夹中的所有脚本.如果脚本失败/抛出错误并在此时停止,我也希望该工具回滚一个脚本.

这就是我想要的但我不介意改变我的约定,虽然我想写自己的sql脚本.我也希望该工具是免费的或开源的,因为我不需要太多.由于我的项目是C#,我更喜欢在.Net中构建工具

.net c# database sql-server database-versioning

5
推荐指数
2
解决办法
1298
查看次数

模板化类中单个方法的模板特化

始终考虑包含我的模板类的以下标头至少包含在两个.CPP文件中,此代码正确编译:

template <class T>
class TClass 
{
public:
  void doSomething(std::vector<T> * v);
};

template <class T>
void TClass<T>::doSomething(std::vector<T> * v) {
  // Do something with a vector of a generic T
}

template <>
inline void TClass<int>::doSomething(std::vector<int> * v) {
  // Do something with a vector of int's
}
Run Code Online (Sandbox Code Playgroud)

但请注意专业化方法中的内联.由于该方法被定义多次,因此需要避免链接器错误(在VS2008中为LNK2005).我理解这一点,因为AFAIK完整的模板专业化与简单的方法定义相同.

那么,我该如何删除inline?代码不应该在每次使用时都重复.我搜索了Google,在SO中阅读了一些问题并尝试了许多建议的解决方案但没有成功构建(至少在VS 2008中没有).

谢谢!

c++ templates specialization visual-studio-2008

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

在哪里将接口放在基于组件的架构中?

在基于组件的体系结构中,大量的解耦组件通过一组标准化接口进行通信 - 是否有任何关于接口存储/如何分组的指导原则?

极端的解决方案是:

  • 所有人都在同一个集会中(离开你去)
  • 每个接口一个组件

这两个选项对我来说似乎都是错误的 - 第一个选项不够灵活(例如,如果你只想改变一个界面),第二个是另一个极端,这可能会很快升级到维护噩梦.

特别是,我正在寻找KILLER的论点,不要采用上面的两个极端,显然是替代的approchaes.

任何意见赞赏.

.net architecture components interface

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

MySQL-防止重复预定

我正在尝试找出最好的方法来停止我的应用程序中的双重“预订”。

我有一个唯一ID的表,每个表只能出售一次。

我当前的想法是使用事务检查所选产品是否可用,然后将其插入到“状态”列中以表示已被“保留”,同时插入“更新时间”,然后用户继续操作。支付我将状态更新为“出售”。

每隔10分钟,我都会进行一次cron作业检查,以检查“状态” =“保留”,该检查已在10多分钟前进行了更新,并删除了这些行。

有没有更好的办法?我从未使用过交易(我刚刚听到过类似的词),所以如果有人可以解释我将如何做到这一点,那将是王牌。

mysql database transactions insert

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

抑制MS警告的最佳解决方案包括(mmsystem.h中的C4201)

我厌倦了在编译过程中不得不查看警告 - 来自MS的警告包括文件.

"C:\ Program Files\Microsoft SDKs\Windows\v6.0A\include\mmsystem.h(1840):警告C4201:使用非标准扩展名:无名结构/联合"

我已经看到这个线程建议改变标题本身(但是我的每个队友必须这样做,我们必须在构建服务器上进行 - 更不用说它是一个光荣的HACK)

有没有更好的办法?我不想全局关闭它 - 只是为某些文件或目录禁止它.

有什么建议?

编辑由于一些愚蠢的原因,我不认为我可以在包含文件中设置警告级别.谢谢 - 这就是诀窍.

c++ warnings visual-studio

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

如何对浮点数执行按位运算

我试过这个:

float a = 1.4123;
a = a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我得到一个编译错误,说操作数&不能是float类型.

当我做:

float a = 1.4123;
a = (int)a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我让程序运行.唯一的事情是按位操作是在舍入后获得的数字的整数表示上完成的.

以下也是不允许的.

float a = 1.4123;
a = (void*)a & (1 << 3);
Run Code Online (Sandbox Code Playgroud)

我不明白为什么int可以投,void*但不是float.

我这样做是为了解决Stack Overflow问题中描述的问题如何使用遗传算法求解线性方程?.

c++ floating-point bitwise-operators genetic-algorithm

45
推荐指数
5
解决办法
6万
查看次数

如何在Delphi中捕获DBGrid中的滚动事件

我有一个DBGrid,每次使用水平滚动条时,我需要运行一些代码。我在DBGrid中找不到此类事件。你能建议些什么吗?

delphi events scrollbar dbgrid

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

是否应将某些GPL代码翻译成其他语言作为GPL许可?

是否应将某些GPL代码翻译成其他语言作为GPL许可?

例如,我们有x264 C/C++ H264编码开源GPL库.如果我们将代码作为GPL许可,我们将它从... C\C++翻译成Java或C#?

licensing gpl

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