小编JnB*_*ymn的帖子

迭代列表时C++从列表中删除

我有一个std::listBananas,我想摆脱坏的.是否有任何相对简单的方法来执行以下伪代码?

foreach(Banana banana in bananaList)
{
    if(banana.isBad()) bananaList.remove(banana);
}
Run Code Online (Sandbox Code Playgroud)

(从C#和Java转换到C++是一条艰难的道路.)

c++ list

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

什么是"java:不匹配".意思?

从命令行运行java时:

java -classpath bin:pellet-2.0.0/lib/* com.stuff.MyClass argumentTextStuff

我收到以下回复:

java: No match.
Run Code Online (Sandbox Code Playgroud)

这是什么意思? which java指向预期的文件.如果我取出星号,那么我得到预期的类未找到错误.谷歌搜索并不富有成效,因为我一直在寻找匹配正则表达式模式的东西.

java command-line

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

C++:创建共享对象而不是对象的共享指针

boost :: shared_ptr真让我烦恼.当然,我理解这种事情的实用性,但我希望我可以使用它shared_ptr<A> 作为一个A*.请考虑以下代码

class A
{
public:
    A() {}
    A(int x) {mX = x;}
    virtual void setX(int x) {mX = x;}
    virtual int getX() const {return mX;}
private:
    int mX;
};


class HelpfulContainer
{
public:
    //Don't worry, I'll manager the memory from here.
    void eventHorizon(A*& a)
    {
        cout << "It's too late to save it now!" << endl;
        delete a;
        a = NULL;
    }
};


int main()
{
    HelpfulContainer helpfulContainer;

    A* a1 = new A(1); …
Run Code Online (Sandbox Code Playgroud)

c++ pimpl-idiom smart-pointers shared-ptr

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

如何在调用MATLAB的dir函数后过滤隐藏文件

使用MATLAB,我需要从目录中提取一组"有效"文件.有效,我的意思是它们不能是目录,它们不能是隐藏文件.过滤目录很容易,因为dir返回的结构有一个名为isDir的字段.但是,我还需要过滤掉MacOSX Windows可能放在目录中的隐藏文件.什么是最简单的跨平台方式?我真的不明白隐藏文件是如何工作的.

filesystems matlab hidden-files

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

正则表达式:匹配与子正则表达式不匹配的行

假设我有一个正则表达式foob​​ar,我想在文档中找到与foob​​ar不匹配的所有行.我可以这样做吗?我该怎么做呢?

regex lookaround

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

System.Windows.Forms中提供的事件序列和所有挂钩

是否有关于System.Windows.Forms的各种表单和组件的创建,操作和关闭中发生的事件序列的任何解释?是否有一个解释我可以覆盖的所有可能的钩子以及它们被调用的顺序以及它们的调用之间发生了什么?

我遇到了很多可以避免的问题,因为我对这里发生的事情没有很好的了解.

.net c# winforms

3
推荐指数
1
解决办法
2963
查看次数

VC++说"没有重载函数需要7个参数"我说是的!

在我的PDBComponent类的头文件中,我刚刚为两个构造函数创建了一个新的构造函数:

class PDBComponent {
    public:
        PDBComponent(string name,double min_current,double nom_current,
                     double max_current, EPSCommands* command_ptr, double delay);
        PDBComponent(string name,double min_current,double nom_current,
                     double max_current, EPSCommands* command_ptr, EPSFault* fault_ptr ,double delay);
...
Run Code Online (Sandbox Code Playgroud)

当我使用第一个构造函数时,我没有编译错误.像这样:

PDBComponent component = PDBComponent("STX"     ,0.1,  0.5,  1.0
        ,new EPSCommands( 1.0, 3.0),0.0);
Run Code Online (Sandbox Code Playgroud)

但是,当我使用第二个构造函数时,我得到一个编译错误::

PDBComponent component = PDBComponent("STX"     ,0.1,  0.5,  1.0
        ,new EPSCommands( 1.0, 3.0), new EPSFault(EPSFault::OpenCircuit,2.0),0.0);
Run Code Online (Sandbox Code Playgroud)

编译错误:

错误C2661:'fs5system :: PDBComponent :: PDBComponent':没有重载函数需要7个参数

我想也许我正在使用一个头文件,而编译器正在查看另一个头文件,所以我注释掉了第一个构造函数.编译器显示它正在重新编译PDBComponent.cpp然后显示错误:

错误C2511:'fs5system :: PDBComponent :: PDBComponent(std :: string,double,double,double,fs5system :: EPSCommands*,double)':'fs5system :: PDBComponent'中找不到重载的成员函数

...表示编译器确实在查看正确的头文件.

有谁知道为什么我看到这种行为?

我正在使用Visual Studios C++进行编译.


更多线索: …

c++ compiler-errors visual-c++

3
推荐指数
1
解决办法
4033
查看次数

boost :: shared_ptr问题.为什么这样做?

在试验这个问题时,我创造了一个我完全不理解的例子.特别是,它突出了我对指针,引用和boost :: shared_ptr的误解.

int& r = *(new int(0));//gratuitous pointer leak, got to initialize it to something
{
    boost::shared_ptr<int> sp(new int(100));
    r = *sp;
    cout << "r=" << r << endl;
}
cout << "r=" << r << endl << endl;

int* p;
{
    boost::shared_ptr<int> sp(new int(100));
    p = &*sp;
    cout << "*p=" << *p << endl;
}
cout << "*p=" << *p << endl;
Run Code Online (Sandbox Code Playgroud)

运行此代码会得到如下输出:

r=100
r=100

*p=100
*p=13
Run Code Online (Sandbox Code Playgroud)

为什么引用在shared_ptr的死亡中存活但指针不存在?


这里的答案存在一个问题,即似乎存在两种截然相反且相互矛盾的解决方案,而且没有就真理达成共识.我希望能够在删除shared_ptr后使用引用,但如果它无效,我真的需要理解这一点.

也许有人可以发布一个简单的例子来演示引用中未定义的行为.

c++ pointers reference shared-ptr

3
推荐指数
1
解决办法
848
查看次数

如何在命令行中使用perl样式的正则表达式匹配多行模式?

我经常使用正则表达式来转换文本.

要从命令行转换巨型文本文件,perl让我这样做:

perl -pe < in.txt > out.txt
Run Code Online (Sandbox Code Playgroud)

但这本质上是逐行的.偶尔,我想匹配多线的东西.

我怎么能在命令行中这样做?

regex perl multiline command-line-tool

3
推荐指数
1
解决办法
1748
查看次数

一般来说,我如何在VIM中"定义"?然后我如何与golang?

两部分问题:

首先,在使用VIM时我应该采取什么样的过程以及键入哪些键来"定义"或"转到声明"等?这个文件可能是我的问题的答案,但我不能让它工作,所以我不确定.看起来它只是文本匹配字符串而不是找到真正的定义.如果我可以让它工作,那么我能够跳到当前文档之外的定义/声明吗?或者这仅适用于单个文档?

其次,如何使用Go编程语言专门开展此工作?这肯定将是不错的"点击" Client

clnt := &http.Client{Transport: tr}

并采用定义http.Client实际代码.

可能?怎么样?

vim go

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