小编moo*_*eep的帖子

与PostgreSQL的isnumeric()

我需要确定一个给定的字符串是否可以解释为SQL语句中的数字(整数或浮点).如下所示:

SELECT AVG(CASE WHEN x ~ '^[0-9]*.?[0-9]*$' THEN x::float ELSE NULL END) FROM test
Run Code Online (Sandbox Code Playgroud)

我发现Postgres的模式匹配可以用于此.所以我调整了这个地方给出的语句来合并浮点数.这是我的代码:

WITH test(x) AS (
    VALUES (''), ('.'), ('.0'), ('0.'), ('0'), ('1'), ('123'),
    ('123.456'), ('abc'), ('1..2'), ('1.2.3.4'))

SELECT x
     , x ~ '^[0-9]*.?[0-9]*$' AS isnumeric
FROM test;
Run Code Online (Sandbox Code Playgroud)

输出:

    x    | isnumeric 
---------+-----------
         | t
 .       | t
 .0      | t
 0.      | t
 0       | t
 1       | t
 123     | t
 123.456 | t
 abc     | f
 1..2    | f
 1.2.3.4 …
Run Code Online (Sandbox Code Playgroud)

regex postgresql

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

如何获得嵌套向量的维度(嵌套)(不是大小)?

请考虑以下声明:

vector<vector<int> > v2d;
vector<vector<vector<string>> > v3d;
Run Code Online (Sandbox Code Playgroud)

如何在后续代码中找出向量的"维度"?例如,v2d为2,v3d为3?

c++ vector

31
推荐指数
2
解决办法
1695
查看次数

在Python中,None的计算结果小于零?

在Python中,None评估小于零?

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> None < 0
True
>>> None == 0
False
>>> None > 0
False
>>>
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?

我猜想这None将等于零(通过类型强制),或者所有这些语句都会返回False.

python python-2.x

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

可以在C++中使用C标准库中的函数吗?

现在我已经熟悉了C和C标准库,我想知道当我转向以后使用C++时,我在这方面的知识是否有用.

因此,我想知道,我是否可以在C++设置中使用C标准库提供的功能,以及是否以及为什么实际这样做是有意义的.

c c++ language-interoperability

30
推荐指数
2
解决办法
2537
查看次数

有没有办法防止在子类中重写方法?

是否有人知道C++中的语言特性或技术,以防止子类过度使用父类中的特定方法?

class Base {
public:
    bool someGuaranteedResult() { return true; }
};

class Child : public Base {
public:
    bool someGuaranteedResult() { return false; /* Haha I broke things! */ }
};
Run Code Online (Sandbox Code Playgroud)

尽管它不是虚拟的,但仍然允许这样做(至少在我正在使用的Metrowerks编译器中),所有你得到的是关于隐藏非虚拟继承函数X的编译时警告.

c++ overriding metrowerks

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

链接C++的迭代器

Python的itertools实现了一个迭代器,它基本上连接了许多不同的迭代器,以提供单个迭代器的所有东西.

C++中有类似的东西吗?快速浏览一下boost库并没有发现类似的东西,这对我来说非常令人惊讶.难以实现此功能吗?

c++ iterator

26
推荐指数
1
解决办法
9139
查看次数

如何使用Python的smtplib发送电子邮件中的换行符?

我编写了一个脚本,将消息写入文本文件,并将其作为电子邮件发送.一切顺利,除了电子邮件似乎总是在一行.

我添加换行符\n,它适用于文本文件,但不适用于电子邮件.你知道可能的原因是什么吗?


这是我的代码:

import smtplib, sys
import traceback
def send_error(sender, recipient, headers, body):

    SMTP_SERVER = 'smtp.gmail.com'
    SMTP_PORT = 587
    session = smtplib.SMTP('smtp.gmail.com', 587)
    session.ehlo()
    session.starttls()
    session.ehlo
    session.login(sender, 'my password')
    send_it = session.sendmail(sender, recipient, headers + "\r\n\r\n" +  body)
    session.quit()
    return send_it


SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
sender = 'sender_id@gmail.com'
recipient = 'recipient_id@yahoo.com'
subject = 'report'
body = "Dear Student, \n Please send your report\n Thank you for your attention"
open('student.txt', 'w').write(body) 

headers = ["From: " + sender, …
Run Code Online (Sandbox Code Playgroud)

python email smtplib python-2.7

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

我应该在函数调用中的最后一个参数后添加一个尾随逗号吗?

什么是更好的做法?

self.call(1, True, "hi")
Run Code Online (Sandbox Code Playgroud)

要么

self.call(1, True, "hi",)
Run Code Online (Sandbox Code Playgroud)

以下情况如下:

self.call(
    1,
    True,
    "hi"
)
Run Code Online (Sandbox Code Playgroud)

要么

self.call(
    1,
    True,
    "hi",
)
Run Code Online (Sandbox Code Playgroud)

在数据结构中添加尾随逗号的原因对我来说很熟悉,但是函数调用呢?

python coding-style function parameter-passing

22
推荐指数
4
解决办法
8795
查看次数

int的默认构造函数

可能重复:
为什么使用一组空括号来调用没有参数的构造函数是错误的?

在回答这个问题的时候,据说是这样的

int是默认构造为0,就像用int()初始化它们一样.其他原始类型被类似地初始化(例如,double(),long(),bool()等).

就在我向我的同事解释这个时,我编写了以下代码,编译(gcc-4.3.4)并运行,并观察到意外行为.

#include <iostream>

int main() {
  int i(); 
  std::cout << i << std::endl; // output is 1
}
Run Code Online (Sandbox Code Playgroud)

为什么是输出1,但0

c++

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

C++的"yield"关键字,如何从函数中返回迭代器?

请考虑以下代码.

std::vector<result_data> do_processing() 
{
    pqxx::result input_data = get_data_from_database();
    return process_data(input_data);
}

std::vector<result_data> process_data(pqxx::result const & input_data)
{
    std::vector<result_data> ret;
    pqxx::result::const_iterator row;
    for (row = input_data.begin(); row != inpupt_data.end(); ++row) 
    {
        // somehow populate output vector
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

当我在考虑是否可以期待返回值优化(RVO)时,我发现Jerry Coffin的这个答案 [强调我的]:

至少IMO,这通常是一个糟糕的主意,但不是出于效率原因.这是一个糟糕的主意,因为有问题的函数通常应该写成通过迭代器生成输出的通用算法.几乎任何接受或返回容器而不是在迭代器上运行的代码都应该被认为是可疑的.

不要误解我的意思:有时候传递类似于集合的对象(例如字符串)是有意义的,但对于引用的例子,我会考虑传递或返回向量一个糟糕的想法.

有一些Python背景,我非常喜欢Generators.实际上,如果它是Python,我会把上面的函数写成一个Generator,即避免在其他任何事情发生之前处理整个数据的必要性.例如这样:

def process_data(input_data):
    for item in input_data:
        # somehow process items
        yield result_data
Run Code Online (Sandbox Code Playgroud)

如果我正确地解释了Jerry Coffins的说法,这就是他的建议,不是吗?如果是这样,我如何在C++中实现它?

c++ iterator generator yield-keyword coroutine

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