小编Qua*_*ool的帖子

Array [n] vs Array [10] - 初始化具有变量与实数的数组

我的代码出现以下问题:

int n = 10;
double tenorData[n]   =   {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Run Code Online (Sandbox Code Playgroud)

返回以下错误:

error: variable-sized object 'tenorData' may not be initialized
Run Code Online (Sandbox Code Playgroud)

而使用double tenorData[10]作品.

谁知道为什么?

c++ arrays size initialization

74
推荐指数
1
解决办法
16万
查看次数

使用C#6中的命名参数进行字符串插值

鉴于我有一个存储在我的数据库中的元数据资源字符串将返回如下:

var pageTitle = "Shop the latest {category1} Designer {category2} {category3} at www.abc.com";
Run Code Online (Sandbox Code Playgroud)

我想替换{placeholders}变量values;

var category1 = "womenswear";
var category2 = "dresses";
var category3 = "cocktail dresses";
Run Code Online (Sandbox Code Playgroud)

我试过了,没有运气;

var newTitle = $"pageTitle, category1, category2, category3";
var newTitle = $(pageTitle, category1, category2, category3);
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用string.Replace()它有性能开销.有谁知道如何使用最新的C#字符串插值有效地完成这项工作?

c# asp.net asp.net-mvc

18
推荐指数
4
解决办法
3597
查看次数

差异调用函数与星号参数和没有

我知道星号在Python中的函数定义中是什么意思.

不过,我经常会看到使用参数调用函数的星号:

def foo(*args, **kwargs):
    first_func(args, kwargs)
    second_func(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

第一个和第二个函数调用有什么区别?

python function-parameter argument-unpacking

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

Python装饰器自动定义__init__变量

我已经厌倦了在我的__init__功能中不断地一遍又一遍地输入相同的重复命令.我想知道我是否可以写一个装饰师为我做这项工作.这是我的问题的一个例子:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以让我自动将所有传递给函数的参数变成具有相同名称的实例变量?例如:

class Point:
    @instance_variables
    def __init__(self, x, y):
        pass
Run Code Online (Sandbox Code Playgroud)

哪里@instance_variables会自动设置self.x = x和self.y = y.我怎么能这样做?
谢谢!

编辑:我应该提到我使用CPython 2.7.

python constructor initialization class decorator

9
推荐指数
1
解决办法
1743
查看次数

未定义的对WinMain @ 16 C++的引用

我正在学习C++,而且我一直在关注thenewboston.org上的教程.我正在尝试将类放在不同的文件中.在Codeblocks中编译时,我收到消息"未定义的WinMain @ 16引用".这是我的代码:

Burrito.cpp

  #include "Burrito.h"
  #include <iostream>

   using namespace std;

    Burrito::Burrito()
   {
    cout << "Im a burrito!"<< endl;
    }
Run Code Online (Sandbox Code Playgroud)

Burrito.h

        #ifndef BURRITO_H
        #define BURRITO_H


        class Burrito
        {
        public:
        Burrito();

         };

         #endif // BURRITO_H
Run Code Online (Sandbox Code Playgroud)

main.cpp中

     #include <iostream>
     #include "Burrito.h"
     using namespace std;

     int main()
     {
         Burrito Obj1;
         return 0;
      }
Run Code Online (Sandbox Code Playgroud)
  • 所有文件都保存在同一目录中
  • 我正在使用Windows 8 x64
  • codeblocks latestversion

c++ codeblocks winmain

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

此示例代码将无法编译

我无法理解在cygwin shell中编译此代码时收到的错误消息.消息很长,但在这1000行误差的中间某处说:

没有匹配的运营商呼叫<

这是什么意思?这是我的代码:

#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>

using namespace std;

struct Grade{
 string id;
 int score;

  bool operator() (Grade& a, Grade& b){
        return a.id < b.id;   
    } 
};  

int main()
{   
    Grade g;
    set<Grade> gs;

    g.id = "ABC123";
    g.score = 99;
    gs.insert(g);

    g.id = "BCD321";
    g.score = 96;
    gs.insert(g);

    for(auto it : gs)
        cout << it.id << "," << it.score;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

5
推荐指数
4
解决办法
177
查看次数

标准库函数,用于创建索引数组,其对应值为给定数字

我有一个C风格的数组board,包含一些char.我正在尝试创建一个std::array或std::vector(或者会很好,尽管std::array更可取)来存储它的所有索引board(在我的情况下0).
我写的这段代码功能齐全,效果很好:

std::vector<int> zeroes;
zeroes.reserve(16);
//board has 16 elements, so zeroes.size() will never be larger than 16.
//I used this reserve for speedup - the compiler doesn't require it.
for (int i = 0; i < 16; ++i)
{
    if (board[i] == 0)
    {
        zeroes.push_back(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,根据过去的经验,只要std存在可以替换我的部分代码的函数,它就更加简洁,因此风格上更受欢迎,也更快.我的函数似乎是一个相当基本的操作 - 我知道有一个标准函数*来访问数组的索引,该数组包含一个值,当该值只在数组中出现**时.那么,是否存在一个标准函数来创建包含值的索引数组,假设存在多个这样的索引?


*从技术上讲,两个嵌套的函数调用:int x = std::distance(board, std::find(board, board + 16, 0));.请在此处查看接受的答案 …

c++ arrays c++-standard-library c++11

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

在"+"符号上拆分Java字符串会出错

我正在编写一个java程序,其中一个子任务是获取一个字符串并将其拆分到一个位置.所以,这是我的代码的一小部分:

public class Driver
{
    public static void main(String[] args)
    {
        String str = "a+d";
        String[] strparts = str.split("+");
        for (String item : strparts)
        {
            System.out.println(item);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我期待结果:

a
d
Run Code Online (Sandbox Code Playgroud)

但令我惊讶的是,我得到:

Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0
+
^

    at java.util.regex.Pattern.error(Pattern.java:1955)
    at java.util.regex.Pattern.sequence(Pattern.java:2123)
    at java.util.regex.Pattern.expr(Pattern.java:1996)
    at java.util.regex.Pattern.compile(Pattern.java:1696)
    at java.util.regex.Pattern.<init>(Pattern.java:1351)
    at java.util.regex.Pattern.compile(Pattern.java:1028)
    at java.lang.String.split(String.java:2367)
    at java.lang.String.split(String.java:2409)
    at Test.Driver.main(Driver.java:8)
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?
谢谢!

java regex string split patternsyntaxexception

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

为什么这个看似简单的C++代码会产生分段错误?

我正在尝试编写一个增强算法(人工智能的一个特性).速度是一个优先事项,所以我已经从使用我的原生Python切换到C++.我编写了整个程序,但是我得到了一个错误,我把它归结为我在基类中犯的一个错误:一个非常简单的启发式方法叫做"H".文件hh,h.cpp和我当前的测试函数main.cpp是:

//h.h

#ifndef __H_H_INCLUDED__
#define __H_H_INCLUDED__

#include <iostream>
#include <vector>

class H
{
    public:
        H(int, double, bool);
        //The first parameter is the axis
        //The second parameter is the cutoff
        //The third parameter is the direction
        bool evaluate(std::vector<double>&);
        //This evaluates the heuristic at a given point.
    private:
        int axis;
        double cutoff;
        bool direction;
};

#endif

//h.cpp

#include "h.h"

H::H(int ax, double cut, bool d)
{
    axis = ax;
    cutoff = cut;
    direction = d;
}

bool H::evaluate(std::vector<double>& point)
{
    if (direction) …
Run Code Online (Sandbox Code Playgroud)

c++ reference class segmentation-fault

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

将此实例变量添加到C++ 11文件的标题中可以使编译器更上一层楼.为什么?

我一直试图让我的人工智能程序(用C++ 11编写)停止喷出比我的终端记录更大的错误信息.我一次只丢掉了一个方法,直到消息消失,因此找到了使电脑变得疯狂的精确线条.这是我的代码的相关部分:

#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>

class H
{
    public:
        H(int);
        int get_val();
    private:
        int val;
};

class Hvote
{
    public:
        Hvote() : error(1.0) { }
        std::vector<H&> hs;
        double error;
};

int main()
{
    Hvote hvote;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

对我来说,一切看起来都很合理.但是,编译器(g ++)不同意.错误消息是如此之长,以至于我的终端甚至不打扰保存开头,所以我不知道它们的真实长度.但是,它们非常重复.例如,最后一页是:

/usr/include/c++/4.8/bits/stl_vector.h: In instantiation of ‘class std::vector<H&>’:
hvote.h:16:25:   required from here
/usr/include/c++/4.8/bits/stl_vector.h:237:20: error: no members matching ‘std::vector<H&>::_Base {aka std::_Vector_base<H&, std::allocator<H&> >}::_M_allocate’ in ‘std::vector<H&>::_Base {aka struct std::_Vector_base<H&, std::allocator<H&> >}’
   using _Base::_M_allocate;
                ^
/usr/include/c++/4.8/bits/stl_vector.h:238:20: error: no members matching …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors g++ instance-variables c++11

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