小编Man*_*d3r的帖子

Boost :: asio不在Debian Wheezy上?

Boost :: asio自1.35版开始包含在Boost中.但是我无法在Debian Wheezy的boost库中找到asio,尽管它的版本是1.48.他们不受支持吗?

c++ debian boost

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

Lambda函数性能对捕获的影响

我刚刚写了一个很大的截图:

[this, &newIndex, &indexedDirs, &filters, &flags, &indexRecursion](){...
Run Code Online (Sandbox Code Playgroud)

我使用此lambda(indexRecursion)进行了无数元素的递归,并问自己,使用“全局”捕获是否会更有效[&]。由于我不了解捕获的实现方式,因此需要一些解释。请也有背景。

c++ lambda

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

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

SQLTable,包含指向另一个表中的行的链接

我想实现一个食谱数据库.一张桌子应该容纳食物和它的单位,另一张桌子应该拿着菜肴的食谱.但不知怎的,我不知道如何实现它.餐具表中的一个条目包含菜肴的名称和来自ingredents表的几个ID,其中有一个因子(双倍)表示该数量的单位.

现在我的问题是,我怎样才能让这个条目包含几个带有ingredentID和factor的条目?

php mysql sql database

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

派生类的实例化是否为基类的私有成员分配内存?

我想这个话题是我需要问的.关于这个主题的一点解释会很好.请清楚一些问题,例如为什么或为什么不?

例:

class A {
 private:
  int a;
};

class B : A {
 int b;
};

int main (int argc, char **argv) {
 B *p = new B(); // Does this allocate memory for a?
}
Run Code Online (Sandbox Code Playgroud)

c++

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

强制向操作系统释放内存

我有一个需要大约 20 MB 内存的应用程序。在很少使用的算法中,它 (std::vector) 临时分配了 250 MB。解除分配后,系统监视器仍会显示此用法。如何将内存释放回系统?

c++

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

将std :: list扩展为cylic列表

我想基于std :: list实现循环列表.我希望从列表的优点中获益,但添加一个特定的功能:它的迭代器运算符++和 - 应跳过边缘并且操作(插入/擦除)不得使现有的迭代器无效.我处理模板的技巧很弱,理解std容器对我来说是不可能的行为.因此我需要你的帮助.到现在为止我还没那么远:D.对不起,即使是很多帖子都没有帮助我.

编辑:经过大量的工作,一个steeeep学习曲线,从std :: list :: iterator继承的失败方法,一个短暂的抑郁和一个缓慢的回归你的方法(是的,你们都是对的)我终于做好了.受到你所有观点的启发,我现在可以发布我上次做的...大约12个小时:D基本上你的建议,但是有很好的小操作员.

#pragma once
#include <list>
using std::list;

template<class T>
class cyclic_iterator;


template<class T>
class cyclicList : public list<T>
{
public:
  typedef cyclic_iterator<T> cyclic_iterator;

  cyclic_iterator cycbegin()
  {// not the purpose, but needed for instanziation
    return cyclic_iterator( *this, this->begin());
  }

  cyclic_iterator cycend()
  {// not the purpose, but needed for instanziation
    return cyclic_iterator( *this, this->end());
  }
};




template<class T>
class cyclic_iterator
{
  public:
  // To hop over edges need to know the container
  cyclic_iterator(){} …
Run Code Online (Sandbox Code Playgroud)

c++ iterator list

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

C++中的访问者模式

我想像这样在 C++ 中实现访问者模式:

class Visitor{
public:
  virtual ~Visitor();
  virtual void visit(C & t)=0;
};

class V : public Visitor{
public:
  void visit(C &c);
};

class C{ 
public:
  void accept(Visitor &v){ v.visit(*this); }
};
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨大约 2 个语法错误:未知标识符 C 和访问者。问题出在哪儿?

c++ visitor-pattern

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

好奇的分裂结果

这段代码怎么样......

vector<double> _pc;
vector<int> _documentClassIds;

[...]

someMemberFunction(vector<int> const & documentIds) {

  cout << "_pc[0] = "<< _pc[0]<<endl;
  cout << "_pc[1] = "<< _pc[1]<<endl;
  cout << "documentIds.size() = " << documentIds.size()<<endl;

  // Normalize
  for (auto documentId : documentIds)
    _pc[_documentClassIds[documentId]] =
    _pc[_documentClassIds[documentId]] / documentIds.size();
  cout << "_pc[0] = "<< _pc[0]<<endl;
  cout << "_pc[1] = "<< _pc[1]<<endl;
}
Run Code Online (Sandbox Code Playgroud)

产生这个输出?

_pc[0] = 3
_pc[1] = 3
documentIds.size() = 6
_pc[0] = 0.0138889
_pc[1] = 0.0138889
Run Code Online (Sandbox Code Playgroud)

c++

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

(传统的,先前的c ++ 11 lvalue-)引用如何在C++中工作

指针很简单.有一些存储器保存一个地址.要获取(有意义的)取消引用值,将返回地址指向的内存所包含的值.

引用在某种程度上类似于它们:它们保持与临时对象的"链接".但是当我分配或使用引用时会发生什么?

#include <iostream>
using namespace std;
int one(){
    return 1;
}
int main()
{
    const int &rone = one();
    cout << &rone << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这样做?这个地址是临时对象的地址吗?

sh-4.2# g++ -std=c++11 -o main *.cpp
sh-4.2# main
0x7fff9d2a4e74
Run Code Online (Sandbox Code Playgroud)

这个地址指向哪里?如果它指向神奇的临时对象,为什么我不能做以下事情.(我很清楚它是一个右值,&只接受左值,但为什么?)

int main()
{
    cout << &one() << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题超出了c ++的编程方面.它更多地是在技术方面,C++如何在内部工作.主要是我试图理解移动语义的上下文中的右值引用,这需要理解那些传统的引用(我几乎没用过).

c++ rvalue lvalue c++11

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

嵌套类是否获得外部类的友谊关系?

#include <iostream>
#include <string>

class A {
    friend class B;
    std::string m = "Hello";
};

struct B {
    struct N {
        void f(){
            A a;
            std::cout << a.m << std::endl;
        };
    };
};

int main() {
    B::N().f();
}
Run Code Online (Sandbox Code Playgroud)

是否允许N访问m?

编辑

好吧,我在cpp.sh中运行了它,显然可以运行。是否有通用的规则来了解如何建立友谊关系?

c++ friend

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

网络编程.确定消息的结束

Linux缓冲在套接字上收到的所有收到的消息.但在收到之前,这些消息有一个开始和结束.Linux在缓冲区中按顺序写入此消息,从而丢失了消息结束的信息.

我知道在Linux中我可以使用cmsg_header.But Windows不提供send-/recvmsg()程序.如何确定缓冲区平台上的消息结束?

c c++ sockets network-programming cross-platform

0
推荐指数
1
解决办法
860
查看次数

const参数的方法不接受非const参数?

此代码无法编译:

ErrorTolerantSearch e;
e.readStringsFromFile("test.txt");
e.buildQgramIndex(3);
vector<map<uint, uint>*> lists;
lists.push_back(&e._qgramIndex["ret"]); // ignore this, assume container not empty
lists.push_back(&e._qgramIndex["coo"]); // ignore this, assume container not empty
map<uint, uint> resunion = e.computeUnion(lists); // <-- this makes problems
Run Code Online (Sandbox Code Playgroud)

这是标题的一部分

class ErrorTolerantSearch {
 public:
  void readStringsFromFile(string fileName);
  void buildQgramIndex(uint  q);
  map<uint, uint> computeUnion(const vector<const map<uint, uint>*> & lists);
  map<string, map<uint, uint> > _qgramIndex;
};
Run Code Online (Sandbox Code Playgroud)

这是编译器给出的错误:

ErrorTolerantSearchTest.cpp: In member function ‘virtual void ErrorTolerantSearchTest_computeUnion_Test::TestBody()’:
ErrorTolerantSearchTest.cpp:89:50: error: no matching function for call to ‘ErrorTolerantSearch::computeUnion(std::vector<std::map<unsigned int, unsigned int>*>&)’
ErrorTolerantSearchTest.cpp:89:50: …
Run Code Online (Sandbox Code Playgroud)

c++ const parameter-passing pass-by-reference

0
推荐指数
1
解决办法
171
查看次数