小编Ke *_* Li的帖子

返回一个本地指针

struct node
{
  Item item; node *l, *r;
  node(Item x) {item = x; l = 0; r = 0;}
};

typedef node* link;
link max(Item a[], int l, int r)
{
    int m = (l+r)/2;
    link x = new node(a[m]);
    if (l==r) return x; // return a local pointer
    x->l = max(a, l, m);
    x-r = max(a, m+1, r);
    Item u = x->l->item, v = x->r->item;
    if (u>v) x->item = u;
    else x->item=v;

    return x;    // return a local pointer …
Run Code Online (Sandbox Code Playgroud)

c++ local-variables

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

模板中显式参数的转换

从C++ Primer,我知道对于模板的参数参数,只执行两种转换:一种是const转换,另一种是指针转换的数组/函数.

然而,当涉及到明确的论证时,似乎一切都在变化.假设我们有一个模板功能:

template <typename T>
int compare(const T &a, const T &b)
{
    // do comparison
}
Run Code Online (Sandbox Code Playgroud)

如果没有涉及明确的参数,那么这样的函数调用是非法的:

compare("foo", "foobar");
Run Code Online (Sandbox Code Playgroud)

当我们明确地做到时,奇怪的事情发生了(实际上,它可能并不奇怪,但我不明白):

compare<std::string>("foo", "foobar");
Run Code Online (Sandbox Code Playgroud)

似乎在第二次调用中,"foo""foobar"被转换为std::string,这是有争议的.

模板显式参数是否有任何特殊规则?谢谢.

c++ templates

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

GREP_OPTIONS =' - color = always'导致非打印字符

我的bash版本:

GNU bash, version 3.2.49(22)-release (i686-pc-cygwin)
Copyright (C) 2007 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

在我的.bashrc中,我有:

export GREP_OPTIONS='--color=always'
Run Code Online (Sandbox Code Playgroud)

要重现该问题,请创建一个文件test.txt并写下一些行:

test1: apple
test2: orange
test3: cherry
Run Code Online (Sandbox Code Playgroud)

在bash中,做一个grep:

grep "test" test.txt > 1
Run Code Online (Sandbox Code Playgroud)

当我检查结果时,我会得到这样的结果:

~ > cat -v 1
^[[01;31m^[[Ktest^[[m^[[K1: apple
^[[01;31m^[[Ktest^[[m^[[K2: orange
^[[01;31m^[[Ktest^[[m^[[K3: cherry
Run Code Online (Sandbox Code Playgroud)

对这个问题有什么想法吗?顺便说一下,我设置了fileformats = unix.

grep non-printing-characters

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