小编Ric*_*per的帖子

如何使C++中的每个循环函数与自定义类一起使用

我是C/C++编程的新手,但我已经用C#编程了1.5年了.我喜欢C#而且我喜欢List类,所以我想在C++中创建一个List类作为练习.

List<int> ls;
int whatever = 123;
ls.Add(1);
ls.Add(235445);
ls.Add(whatever);
Run Code Online (Sandbox Code Playgroud)

该实现类似于任何Array List类.我有一个T* vector存储项目的成员,当这个存储空间即将完全填满时,我会调整它的大小.

请注意,这不是用于生产,这只是一个练习.我很了解vector<T>和朋友们.

现在我想循环浏览列表中的项目.我不喜欢用for(int i=0;i<n; i==).我输入for了视觉工作室,等待Intellisense,它建议我:

for each (object var in collection_to_loop)
{

}        
Run Code Online (Sandbox Code Playgroud)

这显然不适用于我的List实现.我想我可以做一些宏观魔术,但这感觉就像一个巨大的黑客.实际上,最让我烦恼的是传递类似的类型:

#define foreach(type, var, list)\
int _i_ = 0;\
##type var;\
for (_i_ = 0, var=list[_i_]; _i_<list.Length();_i_++,var=list[_i_]) 

foreach(int,i,ls){
    doWork(i);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法让这个自定义List类使用foreach-like循环?

c++ foreach list c++11

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

具有MySql和迁移的实体框架失败,因为"最大密钥长度为767字节"

[编辑]这个问题解决了!请参阅帖子末尾的说明.

[编辑2]好的,这个线程已经过时了,MySQL Connector的新版本已经使用MySQL EF解析器处理了这个问题.在这个帖子上寻找@KingPong的答案.不过,我还没有测试过.

我正在尝试使用MySql和EntityFramework进行迁移,但似乎有些错误.

当我进入Update-Database -Verbose包管理器控制台时,EF执行一些将"镜像"我的模型类的查询,一切都很完美,但是EF尝试执行此查询:

create table `__MigrationHistory` 
(
  `MigrationId` varchar(150)  not null 
  ,`ContextKey` varchar(300)  not null 
  ,`Model` longblob not null 
  ,`ProductVersion` varchar(32)  not null
  ,primary key ( `MigrationId`,`ContextKey`) 
 ) engine=InnoDb auto_increment=0
Run Code Online (Sandbox Code Playgroud)

结果是: Specified key was too long; max key length is 767 bytes

我试图将我的数据库排序规则更改为utf-8,但仍然相同.也许关键长度是450个字符,做UTF-8数学(​​我可能错了),我认为它试图创建一个大约1800字节长度的密钥.

由于我是EF的新手,我遵循了一些教程,他们告诉我这样做:

    public Configuration()
    {
        AutomaticMigrationsEnabled = false;

        SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
    }
Run Code Online (Sandbox Code Playgroud)

也许这个SQL生成器做错了,或者EF本身要求生成器生成一个高达767字节的密钥.

我该如何解决这个问题,避免这个问题并让它与MySql一起使用?

[编辑] 好的,这个问题解决了.你必须告诉EF它必须改变它生成__MigrationHistory表的方式.

我做了什么:首先,MySqlHistoryContext.cs用这个内容创建一个名为(或任何你想要的)文件:

...
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Migrations.History;


namespace [YOUR NAMESPACE].Migrations //you …
Run Code Online (Sandbox Code Playgroud)

c# mysql entity-framework

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

在Visual Studio上部署到Windows Phone 10失败

发生了很多事情,我不知道从哪里开始.说真的,这不应该更简单吗?

编辑:有人在这里知道我怎么能联系微软告诉这个?甚至,有人可以告诉他们这个问题吗?

我有最新的Windows 10桌面,还有Windows Phone 10.0.10512.1000.我在Visual Studio 2015中安装了用于Universal Apps开发的工具(以及8.1).我有一个Lumia 730.

所以我用USB线连接了手机.一切都很好,电话得到识别,我可以浏览文件夹.

然后我启动了Visual Studio 2015并创建了一个空白的通用应用程序.编译并尝试部署.现在这发生在我身上:Visual Studio暂停一段时间.最终我收到错误,告知找不到设备(DEP6200).

我已经尝试过几十种解决方案:

  • 在我的笔记本电脑和手机中断开与wifi的连接
  • 重新启动IpOverUsbSvc服务
  • 重新启动计算机和手机
  • 删除设备管理器中的设备
  • 注册和取消注册手机(有时可以使用)
  • 以上所有电话屏幕都解锁了
  • 禁用Hyper-V
  • 禁用防火墙
  • 其他解决方案惨遭失败

我还尝试使用Windows Phone Developer Power Tools.当我尝试使用它时,它要求我安装一些"Phone Tools Update Pack",但是当我尝试时,它说操作没有成功,并且还显示NRE消息字符串(对象引用未设置为实例)一个对象).

我可以毫无问题地浏览手机的文件夹.我试图重新安装驱动程序......我尝试了一切.

这太可悲了.

你们有没有想过要检查的东西?

编辑:我在完成所有这些之前测试了这个应用程序:https://blogs.windows.com/buildingapps/2015/07/09/just-released-windows-10-application-deployment-tool/

它奏效了.如果是这种情况,Windows Phone 10部署在Visual Studio上的工作是否已经开始,或者我们还需要等待一段时间?

编辑2:对我的应用程序清单进行一些更改并选择"ARM"配置后,现在我得到了这个:

1>Deploying to SD Card...
1>Updating the layout...
1>Copying files: Total <1 mb to layout...
1>Checking whether required frameworks are installed...
1>Framework: Microsoft.NET.CoreRuntime.1.0/ARM, app package version 1.0.23117.0 is not currently installed.
1>Framework: Microsoft.VCLibs.140.00.Debug/ARM, app package version …
Run Code Online (Sandbox Code Playgroud)

deployment visual-studio windows-phone windows-phone-8 windows-10

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

处理Newtonsoft.Json中的十进制值

编辑:已经差不多5年了,我不认为这是要走的路.客户端应以正确的数字格式发布数据.使用React或Angular等当前框架,或者使用适当的架构和错误处理和验证,我认为这几乎不是问题.

但是如果有人想要展示他们的Json.NET肌肉,请随时查看答案.


我有一个MVC应用程序,我在其中处理一些JSON.这很简单.我在ModelBinder中有这么简单的代码:

return JsonConvert.DeserializeObject(jsonString, bindingContext.ModelType, new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore,
    MissingMemberHandling = MissingMemberHandling.Ignore,
    Formatting = Formatting.None,
    DateFormatHandling = DateFormatHandling.IsoDateFormat,
    FloatParseHandling = FloatParseHandling.Decimal
});
Run Code Online (Sandbox Code Playgroud)

它完美无瑕.

好吧,有点.

假设我有这个课程:

public class MyClass
{
    public decimal MyProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试反序列化这个json:

"{\"MyProp\": 9888.77}"
Run Code Online (Sandbox Code Playgroud)

当然它可以工作,因为它9888.77是一个Javascript浮点值.我认为.

但是我的页面中有一个屏蔽输入,使得JSON看起来像这样(对不起我的英文):

"{\"MyProp\": \"9.888,77\" }"
Run Code Online (Sandbox Code Playgroud)

AAAND,它失败了.它说它Could not convert string to decimal.

好的,这很公平.它不是JS浮点数,而是Convert.ToDecimal("9.888,77")以我想要的方式工作.

我在互联网上阅读了一些关于自定义反序列化器的教程,但是我可以为我的应用程序中的每个类定义一个自定义反序列化器.

我想要的是简单地重新定义JSON.Net将字符串转换为十进制属性的方式,在任何我想要反序列化的类中.我想Convert.ToDecimal在转换小数的过程中注入函数,当前转换器不起作用.

有没有办法可以做到?

我认为有办法做到这一点,所以我改变了我的代码.

JsonSerializer serializer = new JsonSerializer
{
    NullValueHandling = NullValueHandling.Ignore,
    MissingMemberHandling = MissingMemberHandling.Ignore, …
Run Code Online (Sandbox Code Playgroud)

javascript c# json json.net deserialization

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

用CUDA求和两个数组

我正在学习CUDA,同时遵循本指南.

我还没有完成它,但我决定玩到目前为止看到的东西.

我试图重写第一个使用256个线程的例子.我想这样做,所以每个线程都在一个连续的数组切片上运行.

目标是将2个数组与1,048,576个项相加.

为了比较,这是原始代码,其中每个数组项都是根据步幅访问的:

__global__
void add(int n, float *x, float *y)
{
  int index = threadIdx.x;
  int stride = blockDim.x;
  for (int i = index; i < n; i += stride)
      y[i] = x[i] + y[i];
}
Run Code Online (Sandbox Code Playgroud)

这是我的功能:

__global__
void add2(int n, float* x, float* y) {
    int sliceSize = n / blockDim.x;
    int lower = threadIdx.x * sliceSize;
    int upper = lower + sliceSize;
    for (int i = lower; i < upper; i++) {
        y[i] …
Run Code Online (Sandbox Code Playgroud)

c++ performance cuda

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

将Play项目导入IntelliJ时出错

首先,我不熟悉Java.我做了一些小项目,但从未对Play做过任何事情.

我正在使用Windows 8.1.

我创建了一个项目activator new prj,然后尝试使用其内置功能将其导入IntelliJ.

当它最终尝试导入时,它给了我这个堆栈跟踪:

Error:Error while importing SBT project:
...
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
    at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
    at scala.collection.AbstractTraversable.map(Traversable.scala:105)
    at sbt.Classpaths$.appRepositories(Defaults.scala:1524)
    at sbt.Classpaths$$anonfun$40.apply(Defaults.scala:1040)
    at sbt.Classpaths$$anonfun$40.apply(Defaults.scala:1040)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
    at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:177)
    at sbt.EvaluateSettings$INode.evaluate(INode.scala:135)
    at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:67)
    at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:76)
    at sbt.EvaluateSettings$$anon$3.run(INode.scala:72)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
[error] java.net.URISyntaxException: Illegal character in authority at index 7: file://${activator.home}/repository
[error] Use 'last' for the full log.

See complete log in C:\Users\Ricardo\AppData\Local\Temp\sbt13.log
Run Code Online (Sandbox Code Playgroud)

是的,错误似乎很明显:Illegal character in authority at index …

scala intellij-idea sbt playframework

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