如我错了请纠正我.说我有:
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)
在X
ctor中,name
显然是传递给任何参数的副本X
,X
调用std::string
初始化的移动mem_name
,对吧?
让我们称之为X*的复制然后移动 ; 两个操作:COPY,MOVE.
在Y
's ctor中,name
是一个const ref,这意味着没有元素的实际副本,因为我们直接处理从Y
需要创建对象的地方传递的参数.但是,我们复制name
到初始化mem_name
的Y
; 一个操作:COPY.因此它应该更快(对我来说更好)?
在Scott Meyer的GN13演讲中(围绕时间框架8:10和8:56),他谈到了"想要速度?通过价值传递",我想知道在传递参数时是否有任何性能差异或损失(或者字符串是准确的)通过引用和传递值"以获得速度?"
我知道按值传递参数可能很昂贵,特别是在处理大数据时.
也许(显然?)我的谈话中缺少一些东西?
我正在使用HttpClient向我无法访问的web api服务之一发送请求,我需要跟踪从我的客户端到服务器的实际请求流.有没有办法可以连接小提琴手听取请求?
我使用System.Net.Http.HttpClient类发送请求.
更新:现在试图改善这个问题,因为我无法得到我想要的东西.我正在使用.Net客户端应用程序连接到我自己的IIS上通过HTTP通道托管的Web服务.我之前使用在我的IIS上托管的网站进行了小提琴调试,并观察了我的浏览器和WebSite之间产生的流量.但是,当看到.Net客户端程序使用HttpClient类与Web服务进行通信时产生的流量时,奇怪的是,小提琴手似乎无法利用该流量并且不会显示任何内容..Net HttpClient是否绕过WinInet API连接到服务,导致小提琴手无法观看流量?
是new int[8]()
等同于new int[8]{}
在C++ 11?
换一种说法:
C++ 11标准是否保证每个new int[8]()
并new int[8]{}
返回零初始化数组?
我纯粹使用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) 我想在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) 我有一个 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 仍然太大,所以该矩形不适合视图。
我希望我能解释我的问题。
我想传递多个参数以便在函数内构造两个对象,同样的方式也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)
但我不知道如何构建Object0
和Object1
。我检查了我的标准库的源代码std::pair
,他们似乎使用复杂的内部函数来获取 args0 和 args1 的索引。您知道如何做到这一点吗?
在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) 跟进这个问题有一个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静态成员变量的奇怪行为,但它似乎是另一个问题.
我想当一个通用引用参数与一个右值引用参数匹配时,会返回一个右值引用参数.但是,我的测试显示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