小编Vik*_*dav的帖子

是什么使i = i ++ + 1; 合法的C++ 17?

在开始大喊未定义的行为之前,这在N4659(C++ 17)中明确列出

  i = i++ + 1;        // the value of i is incremented
Run Code Online (Sandbox Code Playgroud)

然而在N3337(C++ 11)

  i = i++ + 1;        // the behavior is undefined
Run Code Online (Sandbox Code Playgroud)

改变了什么?

从我可以收集,从[N4659 basic.exec]

除非另有说明,否则对单个运算符的操作数和单个表达式的子表达式的评估是不确定的.[...]在运算符结果的值计算之前,对运算符的操作数的值计算进行排序.如果相对于同一存储器位置上的另一个副作用或者使用同一存储器位置中的任何对象的值进行的值计算,对存储器位置的副作用未被排序,并且它们不可能是并发的,则行为是未定义的.

其中定义为[N4659 basic.type]

对于简单的可复制类型,值表示是对象表示中的一组位,用于确定,该是实现定义的值集的一个离散元素

来自[N3337 basic.exec]

除非另有说明,否则对单个运算符的操作数和单个表达式的子表达式的评估是不确定的.[...]在运算符结果的值计算之前,对运算符的操作数的值计算进行排序.如果对标量对象的副作用相对于同一标量对象的另一个副作用或使用相同标量对象的值进行的值计算未被排序,则行为未定义.

同样,值定义在[N3337 basic.type]

对于简单的可复制类型,值表示是对象表示中的一组位,用于确定,该是实现定义的值集的一个离散元素.

它们是相同的,除了提及无关紧要的并发性,并且使用内存位置而不是标量对象,其中

算术类型,枚举类型,指针类型,指向成员类型的指针std::nullptr_t以及这些类型的cv限定版本统称为标量类型.

这不会影响示例.

来自[N4659 expr.ass]

赋值运算符(=)和复合赋值运算符都是从右到左分组.所有都需要一个可修改的左值作为左操作数,并返回一个左值操作数的左值.如果左操作数是位字段,则所有情况下的结果都是位字段.在所有情况下,在右和左操作数的值计算之后,以及在赋值表达式的值计算之前,对赋值进行排序.右操作数在左操作数之前排序.

来自[N3337 expr.ass]

赋值运算符(=)和复合赋值运算符都是从右到左分组.所有都需要一个可修改的左值作为左操作数,并返回一个左值操作数的左值.如果左操作数是位字段,则所有情况下的结果都是位字段.在所有情况下,在右和左操作数的值计算之后,以及在赋值表达式的值计算之前,对赋值进行排序.

唯一的区别是N3337中没有最后一句话.

然而,最后一句话不应该具有任何重要性,因为左操作数i既不是"另一个副作用"也不是 …

c++ language-lawyer c++17

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

给定一百万个数字的字符串,返回所有重复的3位数字

几个月前我在纽约接受了一家对冲基金公司的采访,不幸的是,我没有获得数据/软件工程师的实习机会.(他们还要求解决方案使用Python.)

我几乎搞砸了第一个面试问题......

问题:给定一个百万个数字的字符串(例如Pi),写一个函数/程序,返回所有重复的3位数字和大于1的重复次数

例如:如果字符串是:123412345123456那么函数/程序将返回:

123 - 3 times
234 - 3 times
345 - 2 times
Run Code Online (Sandbox Code Playgroud)

我在面试失败后没有给我解决方案,但他们确实告诉我,解决方案的时间复杂度始终为1000,因为所有可能的结果都在:

000 - > 999

既然我正在考虑它,我认为不可能提出一个恒定的时间算法.是吗?

python algorithm number-theory data-structures

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

python中是否有内置的身份函数?

我想指出一个什么都不做的函数:

def identity(*args)
    return args
Run Code Online (Sandbox Code Playgroud)

我的用例是这样的

try:
    gettext.find(...)
    ...
    _ = gettext.gettext
else:
    _ = identity
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用identity上面定义的,但内置肯定会运行得更快(并避免我自己引入的错误)​​.

显然,mapfilter使用None的身份,但这是具体到它们的实现.

>>> _=None
>>> _("hello")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-3.x

132
推荐指数
6
解决办法
4万
查看次数

创建反应应用程序没有拿起.env文件?

我正在使用create react app来引导我的应用程序.

我已经添加了两个.env文件.env.development,并.env.production在根.

我的.env.development包括:

API_URL=http://localhost:3000/api
CALLBACK_URL=http://localhost:3005/callback
Run Code Online (Sandbox Code Playgroud)

当我使用react-scripts start和控制台运行我的应用程序时,process.env它会吐出来

{ NODE_ENV: "development", PUBLIC_URL: "" }
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的东西,但它只是没有拿起我的开发文件中的变量,我做错了什么?!

Directry结构是:

/.env.development
/src/index.js
Run Code Online (Sandbox Code Playgroud)

Package.json脚本是:

"start": "export PORT=3005; npm-run-all --parallel server:start client:start",
    "client:start": "export PORT=3005; react-scripts start",
    "server:start": "node server.js",
    "build": "react-scripts build",
Run Code Online (Sandbox Code Playgroud)

编辑:

@jamcreencia正确指出我的变量应该加上前缀REACT_APP.

编辑2

如果我命名文件,它可以正常工作,.env但如果我使用.env.development或者.end.production

reactjs create-react-app

47
推荐指数
13
解决办法
3万
查看次数

React Formik:如何使用自定义onChange和onBlur

我开始使用formik库进行反应,我无法弄清楚道具handleChange和handleBlur的用法.

根据文档,handleBlur可以设置为a上的prop <Formik/>,然后必须手动向下传递给<input/>.

我已经尝试过了,没有成功:(为了更清晰,我保留了关于handleBlur的代码)

import React from "react";
import { Formik, Field, Form } from "formik";
import { indexBy, map, compose } from "ramda";
import { withReducer } from "recompose";

const MyInput = ({ field, form, handleBlur, ...rest }) =>
  <div>
    <input {...field} onBlur={handleBlur} {...rest} />
    {form.errors[field.name] &&
      form.touched[field.name] &&
      <div>
        {form.errors[field.name]}
      </div>}
  </div>;

const indexById = indexBy(o => o.id);
const mapToEmpty = map(() => "");

const EmailsForm = ({ fieldsList }) => …
Run Code Online (Sandbox Code Playgroud)

javascript forms reactjs

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

页面加载时,与_next/webpack-hmr的连接中断

使用Next.js - 构建这个

我将我的应用程序移植到nextjs框架.目前,我正在重新创建身份验证系统,否则我的应用程序的这个迭代是非常简单的.突然,在添加我的受保护路线(高阶组件)后 - 不确定是否相关 - 我开始得到这个错误以及超级笨重的加载(显然).

The connection to http://localhost:3000/_next/webpack-hmr was interrupted while the page was loading.

否则一切都按预期工作.

我不知道如何开始解决这类问题.有没有人对我如何获得有关此问题的更多信息/见解有任何想法?如何调试指导?我的下一步行动是开始断开连接,直到它消失为止.任何帮助,将不胜感激!谢谢

reactjs mobx nextjs

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

如何用酶测试子成分方法?

我有一个这样的组件:

<Parent>
  <Child/>
</Parent>
Run Code Online (Sandbox Code Playgroud)

<Child/>组件有一个方法foo.我想测试foo方法,但我不知道如何访问它.我试过了:

mount(<Parent><Child/></Parent>).props().children.foo
Run Code Online (Sandbox Code Playgroud)

要么

mount(<Parent><Child/></Parent>).children().foo
Run Code Online (Sandbox Code Playgroud)

但他们都是undefined.我无法使用,.instance()因为它不是root.我无法挂载<Child/>只是因为<Parent>添加了一些东西(react-router's context.router),context而我在init时需要它们<Child/>.有这个想法吗?

javascript reactjs react-router enzyme

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

使用React将类添加到HTML <body>标记中?

我在我的React项目中创建了一个模态,它需要在模态打开时将类添加到主体,并在关闭时删除.

我可以通过运行一些添加/删除类的vanilla javascript来实现旧的jQuery方式,但这并不像普通的React哲学那样.

我应该在我的顶级组件上设置setState来说天气模式是打开还是关闭?即使我这样做了,因为它渲染到页面上的div中,它仍然是编辑body元素的副作用,所以这个额外的布线有什么好处吗?

html5 classname reactjs

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

ie11的CSS自定义属性polyfill

有没有办法用JavaScript对ie11的自定义CSS属性进行pollyfill?我正在考虑加载,检查浏览器是否支持自定义属性,如果没有在属性上进行某种查找和替换.

JavaScript或某些库可以实现这一点吗?

谢谢

javascript css3 internet-explorer-11 css-variables

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

Birt运行时maven工件问题

我想在我的项目中使用Birt Api库,所以我将rg.eclipse.birt.runtime 4.5 maven依赖项包含到我的项目中

<dependency>
        <groupId>org.eclipse.birt.runtime</groupId>
        <artifactId>org.eclipse.birt.runtime</artifactId>
        <version>4.5.0</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.birt.runtime</groupId>
                <artifactId>org.eclipse.osgi</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>org.eclipse.osgi</artifactId>
        <version>3.10.100.v20150529-1857</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

当我想执行我的报告时,我得到了由"org.eclipse.core.runtime.IExtensionRegistry"引起的堆栈跟踪错误,该签名者信息与同一包中其他类的签名者信息不匹配.以前我使用相同的库Birt Runtime 4.5,但手动下载并附加到我的项目,报告生成成功.

org.eclipse.birt.core.exception.BirtException: error.CannotStartupOSGIPlatform
    at org.eclipse.birt.core.framework.Platform.startup(Platform.java:81)
    at org.report.birt.service.BirtApi.getReport(BirtApi.java:33)
    at org.report.birt.endpoint.BirtEndPoint.handleRequest(BirtEndPoint.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.ws.server.endpoint.MethodEndpoint.invoke(MethodEndpoint.java:134)
    at org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter.invokeInternal(DefaultMethodEndpointAdapter.java:291)
    at org.springframework.ws.server.endpoint.adapter.AbstractMethodEndpointAdapter.invoke(AbstractMethodEndpointAdapter.java:55)
    at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:236)
    at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:176)
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:89)
    at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61)
    at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) …
Run Code Online (Sandbox Code Playgroud)

java birt report maven

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