小编Dei*_*Dei的帖子

参考包通过引用传递

我写了一个简单的可变参数模板函数,我试图理解为什么它不起作用.(它的输出对应物工作得很好.)

#include <iostream>

void read() {}

template<class curr_t, class... rest_t>
void read(curr_t &var, rest_t... rest)
{
    std::cin >> var;
    read(rest...);
}

int main()
{   
    int a = 0, b = 0, c = 0;

    read(a, b, c); //input: 1 2 3
    std::cout << a << b << c; //output: 1 0 0

    std::cin.ignore();
    std::cin.get();
}       
Run Code Online (Sandbox Code Playgroud)

由于可以从评论中可以看出,我输入1 2 3a b c和输出我得到的是1 0 0.显而易见,只a保存其价值.有人可以解释为什么会发生这种情况,我该怎么做才能解决它?谢谢!

编辑::是的,显然我有参数包的概念错了!我还试图做以下事情:rest_t... &rest这给了我一个编译器错误.

相反,如果我写rest_t&... rest它按预期工作.我想这只是我身边的语法错误!感谢谁发布了这个作为答案,并在一分钟后删除了他的答案!d:

c++ templates c++11

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

在头文件中前向声明 constexpr 函数

假设我有以下文件。这是无效的 C++(链接器阻塞,所以是的)还是我的语法错误?constexpr 函数的前向声明是否必须与其定义在同一个文件中?

头文件.h

extern constexpr int fun(int);
Run Code Online (Sandbox Code Playgroud)

源文件

constexpr int fun(int x) 
{
    return x * 2; 
}
Run Code Online (Sandbox Code Playgroud)

c++ constexpr c++11 c++14

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

wmemcpy有什么意义?

这个问题适用于C和C++.

memcpy基本上将原始内存从一个地址复制到另一个地址.所以我的问题是:重点是wmemcpy什么?

我的意思是,它仍然是连续的空间,复制它仍然是相同的过程.如果它是由up构成wchar_t的,或者它应该是什么?

c memory

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

隐式转换运算符不会导致运算符重载

请考虑以下示例:

#include <string>
#include <sstream>

struct Location {
    unsigned line;

    template<typename CharT, typename Traits>
    operator std::basic_string<CharT, Traits>() const {
        std::basic_ostringstream<CharT, Traits> ss;
        ss << line;
        return ss.str();
    }
};

int main() 
{
    using namespace std::string_literals;

    Location loc{42};

    std::string s1 = "Line: "s.append(loc) + "\n"s; // fine
    //std::string s2 = "Line: "s + loc + "\n"s; // error
}
Run Code Online (Sandbox Code Playgroud)

注释行会导致编译错误:no match for 'operator+'.为什么?我最初的想法是,它首先用于operator std::string转换然后执行调用operator+,就像它所做的那样.append.

它只是隐式转换的一个级别,所以它应该被执行并且应该被考虑在内,不是吗?

Live Demo

c++ operator-overloading conversion-operator c++11

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

随机数组选择器

我正在尝试制作一个锻炼计划,每次开始时都会选择随机锻炼和肌肉群.选择了肌肉群,我遇到了麻烦.

我希望它选择三个阵列中的一个但是现在dice_roll的值总是等于2.不确定我哪里出错了.谢谢你的帮助.

(OBS!请原谅我丑陋的代码,它似乎没有正确发布,所以可能会受到伤害!)

int main() 
{
    int muscleGroup;
    string chest[2] = {"Benchpress 4x2", "Pushups 10x4"};
    string legs[2] = {"Squat 8x4", "Leg extension 10x3"};
    string back[2] = {"Pullup 3x8", "Rows 10x3"};
    mt19937 generator; 

    uniform_int_distribution<int> distribution(0, 2);
    int dice_roll = distribution(generator);
    if (dice_roll == 0) 
    {
        cout << "You are training: Chest" << endl;
        cout << "Your exercises are going to be written below!" << endl;
    } 
    else if (dice_roll == 1) 
    {
        cout << "You are training: Legs" << endl;
        cout …
Run Code Online (Sandbox Code Playgroud)

c++

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

在 Angular 5 项目中创建 Web 配置文件?

我创建了一个 Angular 5 网站,我想使用 Webform 或 MVC 部署给客户,我只想更改 webconfig 文件中的一些变量(dbconnection、名称等),但是使用 Angular 我不知道如何去做吧。那么每次部署的时候都要重新构建,那么有没有办法解决这个问题呢?

angular

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

fclose 是否立即释放文件?

我有2个功能。第一个功能是以写入模式打开一个文件并向其中写入一些内容,然后关闭它。

FILE *fp = fopen("file.txt", "w");
//writing itnot file using fwrite
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

第二个函数以读取模式打开文件,解析内容,然后关闭文件。

FILE *fp = fopen("file.txt", "r");
//parsing logic
fclose(fp);
Run Code Online (Sandbox Code Playgroud)

在 中main,我依次调用function1function2

int main()
{
    function1();
    function2();
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

有时,function1 fopen会失败并显示错误号 13,即权限被拒绝。我只是有时观察到这一点。我在 2 秒后引入了一个sleepin ,它开始正常工作,没有任何问题。function1fclose

所以我怀疑文件没有立即发布fclose。睡眠并不是正确的解决办法。谁能建议如何解决这个问题?我在这里给出的示例是一个用例,实际代码在线程环境中运行。

c fopen fclose

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

来自 pandas 数据帧的烛台图,用日期替换索引

此代码给出了带有移动平均线的烛台图,但 x 轴位于索引中,我需要 x 轴位于日期中。需要做什么改变?

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc

#date format in data-> dd-mm-yyyy
nif = pd.read_csv('data.csv')   


#nif['Date'] = pd.to_datetime(nif['Date'], format='%d-%m-%Y', utc=True)

mavg = nif['Close'].ewm(span=50).mean()
mavg1 = nif['Close'].ewm(span=13).mean()

fg, ax1 = plt.subplots()

cl = candlestick2_ohlc(ax=ax1,opens=nif['Open'],highs=nif['High'],lows=nif['Low'],closes=nif['Close'],width=0.4, colorup='#77d879', colordown='#db3f3f')

mavg.plot(ax=ax1,label='50_ema')
mavg1.plot(color='k',ax=ax1, label='13_ema')

plt.legend(loc=4)
plt.subplots_adjust(left=0.09, bottom=0.20, right=0.94, top=0.90, wspace=0.2, hspace=0)
plt.show()
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

python matplotlib candlestick-chart pandas

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

检查类T是否具有成员类型成员void_t

所以这是代码:

template<typename, typename, typename = void>
struct has_member_type : false_type {};

template<typename T, typename Member>
struct has_member_type<T, Member, void_t<typename T::Member>> : true_type {};

struct foo { using bar = int; };

int main()
{
    std::cout << has_member_type<foo, typename foo::bar>::value;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试检查是否foobar类型成员.如果实现没有指定类型成员的名称,它工作正常,但这样的名称硬编码到实现中,这对我不起作用.

说复制的问题并没有接近回答我的问题.正如我在上面的段落中所解释的那样,当类型被硬编码到实现中时,它很好,但是当我从外部指定类型时,我无法使它工作(这是特定的问题).代码编译良好,但产生错误的结果.

c++ templates sfinae c++11 c++14

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

为什么我不能使用std :: begin/std :: end和int(*p)[3]而我可以使用int(&p)[3]?

这有效:

void foo(int (&a)[3]) {
    auto ibegin = begin(a);
    auto ebegin = end(a);
}
Run Code Online (Sandbox Code Playgroud)

虽然这不是:

void foo(int (*a)[3]) {
    auto ibegin = begin(a);
    auto ebegin = end(a);
}
Run Code Online (Sandbox Code Playgroud)

我考虑int (&a)[3]int (*a)[3]具有相同的含义!

c++

4
推荐指数
2
解决办法
131
查看次数