小编Dan*_*anh的帖子

"想要速度?通过价值"是多么真实

如我错了请纠正我.说我有:

struct X
{
    std::string mem_name;

    X(std::string name)
        : mem_name(std::move(name)) 
    {}
    ...
};
struct Y
{
    std::string mem_name;

    Y(const std::string &name)
        : mem_name(name) 
    {}
    ...
};
Run Code Online (Sandbox Code Playgroud)

Xctor中,name显然是传递给任何参数的副本X,X调用std::string初始化的移动mem_name,对吧?

让我们称之为X*复制然后移动 ; 两个操作:COPY,MOVE.

Y's ctor中,name是一个const ref,这意味着没有元素的实际副本,因为我们直接处理从Y需要创建对象的地方传递的参数.但是,我们复制name到初始化mem_nameY; 一个操作:COPY.因此它应该更快(对我来说更好)?

在Scott Meyer的GN13演讲中(围绕时间框架8:10和8:56),他谈到了"想要速度?通过价值传递",我想知道在传递参数时是否有任何性能差异或损失(或者字符串是准确的)通过引用和传递值"以获得速度?"

我知道按值传递参数可能很昂贵,特别是在处理大数据时.

也许(显然?)我的谈话中缺少一些东西?

c++ c++11

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

如何使用fiddler或任何其他工具跟踪HttpClient请求?

我正在使用HttpClient向我无法访问的web api服务之一发送请求,我需要跟踪从我的客户端到服务器的实际请求流.有没有办法可以连接小提琴手听取请求?

我使用System.Net.Http.HttpClient类发送请求.

更新:现在试图改善这个问题,因为我无法得到我想要的东西.我正在使用.Net客户端应用程序连接到我自己的IIS上通过HTTP通道托管的Web服务.我之前使用在我的IIS上托管的网站进行了小提琴调试,并观察了我的浏览器和WebSite之间产生的流量.但是,当看到.Net客户端程序使用HttpClient类与Web服务进行通信时产生的流量时,奇怪的是,小提琴手似乎无法利用该流量并且不会显示任何内容..Net HttpClient是否绕过WinInet API连接到服务,导致小提琴手无法观看流量?

c# httpclient fiddler c#-4.0

39
推荐指数
3
解决办法
4万
查看次数

在C++ 11中,"new int [8]()"等同于"new int [8] {}"吗?

new int[8]()等同于new int[8]{}在C++ 11?

换一种说法:

C++ 11标准是否保证每个new int[8]()new int[8]{}返回零初始化数组?

c++ standards constructor c++11 list-initialization

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

如何在没有服务器的情况下使用Django模板

我纯粹使用Django来创建模板(没有服务器).这是我的计划:

page1.html

{% extends "base.html" %}
{% block 'body' %}

    <div class="container">
        <img src="./images/{{filename}}" style="padding-top:100px; padding-left:100px" align="center" width="60%" heig
    </div>

{% endblock %}
Run Code Online (Sandbox Code Playgroud)

base.html文件

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="../src/bootstrap.min.css">
        <link rel="stylesheet" type="text/css" href="../src/sticky-footer-navbar.css">
        <link rel="icon" href="../images/favicon.ico">

        <title>MY TITLE</title>

    </head>
    <body>


 <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" …
Run Code Online (Sandbox Code Playgroud)

python django django-templates

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

禁用星期日和任何其他特定日期

我想在android日期选择器中的特定月份禁用星期日和特定日期

我使用的Datepicker是android datepicker:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.setMinimalDaysInFirstWeek(27);
// calendar.add(Calendar.DAY_OF_MONTH, 1);
//calendar.set(2016,11,23);
// new   DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
DatePickerDialog dpDialog = new DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
// dpDialog.updateDate(2016,11,23);

DatePicker datePicker = dpDialog.getDatePicker();
//datePicker.updateDate(2016,11,23);
// Date newDate = calendar.getTime();
//dpDialog.getDatePicker().setMinDate(newDate.getTime());
//datePicker.init();

if (calendar.get(Calendar.DAY_OF_MONTH)==Calendar.SUNDAY) {
   // dpDialog.setTitle("Sorry Sundays wont be accepted");
   // dpDialog.setMessage("not selected");
   // dpDialog.show();
    //datePicker.setBackgroundColor(000000);
    Color.parseColor("#000000");
}
else {
    long now = System.currentTimeMillis();

    datePicker.setFirstDayOfWeek(Calendar.MONDAY);
    datePicker.setMinDate(now + (1000 * 60 * 60 * 24 * 1)); …
Run Code Online (Sandbox Code Playgroud)

java android-datepicker

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

QGraphicsScene::clear 不会改变 sceneRect

我有一个 QGraphicsScene“场景”和 QGraphicsView“graphicsView”。

我有一个画图的方法。当我需要重绘所有图形时,我调用这个方法。一切都好。但我意识到 scene->clear() 不会改变 sceneRect。

我也尝试过:

graphicsView->items().clear();
scene->clear();
graphicsView->viewport()->update();
Run Code Online (Sandbox Code Playgroud)

之后,如果我通过以下方式获取 sceneRect

QRectF bound = scene->sceneRect();
qDebug() << bound.width();
qDebug() << bound.height();
Run Code Online (Sandbox Code Playgroud)

我希望bound.width和bound.height为“0”。但他们不是。我每次都会看到以前的值。当我清除场景本身时如何清除 sceneRect?

使用 GraphicsView->fitInView() 方法时,场景矩形保持不变会带来一些问题。我使用以下代码:

QRectF bounds = scene->sceneRect();
bounds.setWidth(bounds.width()*1.007);          // to give some margins
bounds.setHeight(bounds.height());              // same as above
graphicsView->fitInView(bounds);
Run Code Online (Sandbox Code Playgroud)

虽然我完全清除了场景并只添加了一个相当小的矩形,但由于 sceneRect 仍然太大,所以该矩形不适合视图。

我希望我能解释我的问题。

c++ qt qgraphicsview qgraphicsscene

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

std::forward_as_tuple 将参数传递给 2 个构造函数

我想传递多个参数以便在函数内构造两个对象,同样的方式也std::pair<T1, T2>(std::piecewise_construct, ...)可以。

所以我写了

template <typename Args0..., typename Args1...>
void f(std::tuple<Arg0> args0, std::tuple<Args1> args1) {
   Object0 alpha(...);
   Object1 beta(...);
   ...
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以打电话

f(std::forward_as_tuple(..., ..., ...), std::forward_as_tuple(..., ...))
Run Code Online (Sandbox Code Playgroud)

但我不知道如何构建Object0Object1。我检查了我的标准库的源代码std::pair,他们似乎使用复杂的内部函数来获取 args0 和 args1 的索引。您知道如何做到这一点吗?

c++ tuples c++11

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

为什么lambda函数默认情况下会删除推断的返回类型引用?

在C++ 14中,为什么lambda函数带有推导的返回类型默认情况下从返回类型中删除引用?IIUC,因为C++ 14 lambda函数具有推导的返回类型(没有显式的尾随返回类型)具有返回类型auto,它会丢弃引用(以及其他内容).

为什么做出这个决定?在我看来,当你的返回语句返回时,就像删除引用一样.

这种行为给我带来了以下令人讨厌的错误:

class Int {
public:
   Int(int i) : m_int{i} {}
   int m_int;
};

class C {
public:
    C(Int obj) : m_obj{obj} {}
    const auto& getObj() { return m_obj; }
    Int m_obj;
};

class D {
public:
    D(std::function<const Int&()> f) : m_f{f} {}
    std::function<const Int&()> m_f;
};

Int myint{5};
C c{myint};
D d{ [&c](){ return c.getObj(); } } // The deduced return type of the lambda is Int (with no reference)
const Int& myref …
Run Code Online (Sandbox Code Playgroud)

c++ lambda clang auto c++14

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

使用constexpr auto/char-array变量观察到不同的行为

跟进这个问题有一个constexpr静态字符串会给出一个链接器错误

在这个问题中,这段代码无法编译:

#include <iostream>

struct Test { static constexpr char text[] = "Text"; };

int main()
{
    std::cout << Test::text << std::endl; // error: undefined reference to `Test::text'
}
Run Code Online (Sandbox Code Playgroud)

从评论中,这段代码能够编译:

#include <iostream>

struct Test { static constexpr auto text = "Text"; };

int main()
{
    std::cout << Test::text << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么auto版本可以工作,但版本的数组char没有?

能不能指出标准中的声明允许第二个版本而不允许第一个版本?

我看了一下constexpr静态成员变量的奇怪行为,但它似乎是另一个问题.

c++ language-lawyer constexpr auto c++11

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

为什么Rvalue参考被通用参考转换为左值参考

我想当一个通用引用参数与一个右值引用参数匹配时,会返回一个右值引用参数.但是,我的测试显示rvalue引用被通用引用函数模板转换为左值引用.为什么会这样?

#include <iostream>
#include <type_traits>
using namespace std;
template <typename T>
T f1(T&&t) {  //<-----this is a universal reference
  cout << "is_lvalue reference:" << is_lvalue_reference<T>::value << endl;
  cout << "is_rvalue reference:" << is_rvalue_reference<T>::value << endl;
  cout << "is_reference:"        << is_reference<T>::value        << endl;
  return t;
}
void f2(int&& t) {
  cout << "f2 is_lvalue reference:" << is_lvalue_reference<decltype(t)>::value << endl;
  cout << "f2 is_rvalue reference:" << is_rvalue_reference<decltype(t)>::value << endl;
  cout << "f2 is_reference:" << is_reference<decltype(t)>::value << endl;
  f1(t);

}

int main()
{ …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue-reference lvalue-to-rvalue perfect-forwarding c++11

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