小编rlb*_*ond的帖子

C++ 0x将不再具有概念.意见?这会对你有什么影响?

法兰克福举行的2009年7月的C++ 0x会议上,决定从C++ 0x中删除概念.就个人而言,我很失望,但我宁愿有一个可实现的C++ 0x而不是没有C++ 0x.他们说他们将在以后加入.

您对此决定/问题有何看法?它会对你有什么影响?

c++ c++11 c++-concepts

8
推荐指数
2
解决办法
1036
查看次数

使用boost :: iostreams :: tee_device?

有人能帮我吗?

我想尝试做以下事情:

#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
#include <sstream>  
#include <cassert>  

namespace io = boost::iostreams;
typedef io::stream<io::tee_device<std::stringstream, std::stringstream> > Tee;
std::stringstream ss1, ss2;
Tee my_split(ss1, ss2); // redirects to both streams
my_split << "Testing";
assert(ss1.str() == "Testing" && ss1.str() == ss2.str());
Run Code Online (Sandbox Code Playgroud)

但它不会在VC9中编译:

c:\lib\boost_current_version\boost\iostreams\stream.hpp(131) : error C2665: 'boost::iostreams::tee_device<Sink1,Sink2>::tee_device' : none of the 2 overloads could convert all the argument types
Run Code Online (Sandbox Code Playgroud)

有没有人得到这个工作?我知道我可以自己上课去做,但我想知道我做错了什么.

谢谢

c++ iostream stream boost-iostreams

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

他们是否将copy_if添加到c ++ 0x?

非常烦人,copy_if不是在C++中.有谁知道它是否会在C++ 0x中?

c++ algorithm c++11

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

形式不好的无限循环?

所以我在BFS算法中有一些用于反向跟踪节点的C++代码.看起来有点像这样:

typedef std::map<int> MapType;
bool IsValuePresent(const MapType& myMap, int beginVal, int searchVal)
{
    int current_val = beginVal;
    while (true)
    {
        if (current_val == searchVal)
            return true;

        MapType::iterator it = myMap.find(current_val);
        assert(current_val != myMap.end());
        if (current_val == it->second) // end of the line
            return false;
        current_val = it->second;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,while (true)似乎......对我怀疑.我知道这段代码有效,从逻辑上讲我知道它应该有效.但是,我不能感觉到应该有一些条件的感觉while,但实际上唯一可能的是使用一个bool变量来说明它是否已经完成.我应该不要担心吗?或者这是非常糟糕的形式.

编辑:感谢所有人注意到有办法解决这个问题.但是,我仍然想知道是否还有其他有效案例.

c++ language-agnostic coding-style infinite-loop

7
推荐指数
5
解决办法
1154
查看次数

如何输出引号中包含的每个Perl数组元素?

我想在Perl中以特定格式输出数组的元素.

@myArray = ("A", "B", "C");
$text = something;
Run Code Online (Sandbox Code Playgroud)

有些东西应该是字符串' "A" "B" "C"'(用双引号括起来的每个元素).

但是,如果@myArray是空的,那么也$text应该是空的.我想过使用join(),比如

$text = "\"" . join("\" \"", @myArray) . "\"";
if ($text eq "\"\"")
{
    $text = "";
}
Run Code Online (Sandbox Code Playgroud)

我认为这会奏效.但是,有更优雅的方法吗?

arrays string perl

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

Objective-C++中支持多少C++

我想制作一款iPhone应用,但我打算用C++制作这个框架.是否可以在Objective-C++中使用模板之类的东西.我想真的问题是,我可以使用提升吗?

iphone cocoa boost objective-c objective-c++

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

在c ++中创建Point类

现在我使用std :: pair来表示c ++中的2d点.但是,我对写作感到恼火

typedef std::pair<double, double> Point;

Point difference = Point(p2.first - p1.first,
                         p2.second - p1.second);
Run Code Online (Sandbox Code Playgroud)

而不是能够重载operator +和operator-.

所以,我的问题是,要使我的Point课程,我应该

  • 公开派生自std :: pair并添加我自己的成员函数?这很好,因为我的所有代码都可以保持不变.我不打算做任何事情,std::pair<double, double>* p = new Point;所以我不必担心虚拟析构函数等问题.
  • 滚动我自己的Point类,这很烦人,因为我复制了std :: pair的功能,但是我"以纯粹的方式做".
  • 为std :: pair制作operator +和operator-的模板特化,不可否认,我不记得它们是否包含源文件或头文件.

我想这是辩论,我真的很想做#1,但我不知道这是不是一个坏主意,因为我听说从STL继承是一个禁忌.

c++ inheritance operator-overloading

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

返回值是否会在c ++ 0x中通过rvalue引用传递?

假设我有一个功能:

typedef std::vector<int> VecType;
VecType randomVector();

int processing()
{
    VecType v = randomVector();
    return std::accumulate(v.begin(), v.end(), 0);
}
Run Code Online (Sandbox Code Playgroud)

C++ 0x是否明确表示将从randomVector的返回值中避免虚假副本?或者编译器是否需要实现RVO?在我看来,值randomVector()应该被视为一个右值,因此应该调用v的移动构造函数,但我不完全确定这是真的.

c++ return-value rvalue-reference return-value-optimization c++11

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

汇编中的跳转指令如何与多个进程一起工作?

所以,我对跳转指令在操作系统中的工作原理感到困惑.我认为跳转指令设置处理器程序计数器中的值.但程序可以在内存中的不同位置运行.我看到在x86中,有JMP EAX指令,但我的C++代码似乎没有使用它.我在VC++中编译了一些C++代码:

int main()
{
    int i = 0;
    while (i < 10)
    {
        ++i;
        if (i == 7)
        {
            i += 1;
            continue;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着:

    int main()
    {
00411370  push        ebp  
00411371  mov         ebp,esp 
00411373  sub         esp,0CCh 
00411379  push        ebx  
0041137A  push        esi  
0041137B  push        edi  
0041137C  lea         edi,[ebp-0CCh] 
00411382  mov         ecx,33h 
00411387  mov         eax,0CCCCCCCCh 
0041138C  rep stos    dword ptr es:[edi] 
        int i = 0;
0041138E  mov         dword ptr [i],0 
        while (i < 10)
00411395 …
Run Code Online (Sandbox Code Playgroud)

assembly operating-system

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

MATLAB中可扩展的数据结构

我需要在matlab中创建一个包含非常大的结构的队列.我不知道这个队列会有多大.Matlab没有链表,我担心重复分配和复制真的会减慢这个必须运行数千次的代码.我需要某种方式来使用可扩展的数据结构.我在matlab帮助中找到了几个链表的条目,但我无法理解发生了什么.有人可以帮我解决这个问题吗?

matlab linked-list

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