小编ild*_*arn的帖子

为什么我会使用push_back而不是emplace_back?

C++ 11向量具有新功能emplace_back.与push_back依赖于编译器优化以避免副本的情况不同,emplace_back使用完美转发将参数直接发送到构造函数以就地创建对象.在我看来,emplace_back一切都push_back可以做到,但有些时候它会做得更好(但从来没有更糟).

我有什么理由使用push_back

c++ std c++11

215
推荐指数
4
解决办法
5万
查看次数

错误LNK2019:函数___tmainCRTStartup中引用的未解析的外部符号_WinMain @ 16

当我运行如下的简单代码时,我有两个错误如下:

#include <iostream>
#include <string>
using namespace::std;

template <class Type>
class Stack
{
public:
    Stack (int max):stack(new Type[max]), top(-1), maxsize(max){}
    ~Stack (void) {delete []stack;}
    void Push (Type &val);
    void Pop (void) {if (top>=0) --top;}
    Type& Top (void) {return stack[top];}
    //friend ostream& operator<< (ostream&, Stack&);
private:
    Type *stack;
    int top;
    const int maxSize;
};

template <class Type>
void Stack <Type>:: Push (Type &val)
{
    if (top+1<maxsize)
        stack [++top]=val;
}
Run Code Online (Sandbox Code Playgroud)

错误:

MSVCRTD.lib(crtexew.obj):错误LNK2019:_WinMain@16函数中引用的未解析的外部符号___tmainCRTStartup

我该怎么办?

c++ visual-studio visual-c++

135
推荐指数
8
解决办法
22万
查看次数

什么是透明比较器?

在C++ 14中,关联容器似乎已从C++ 11改变 - [associative.reqmts]/13说:

成员函数模板find,count,lower_bound,upper_bound,并且equal_range不得,除非类型参与重载决议Compare::is_transparent存在.

使比较器"透明"的目的是什么?

C++ 14还提供了这样的库模板:

template <class T = void> struct less {
    constexpr bool operator()(const T& x, const T& y) const;
    typedef T first_argument_type;
    typedef T second_argument_type;
    typedef bool result_type;
};

template <> struct less<void> {
    template <class T, class U> auto operator()(T&& t, U&& u) const
    -> decltype(std::forward<T>(t) < std::forward<U>(u));
    typedef *unspecified* is_transparent;
};
Run Code Online (Sandbox Code Playgroud)

因此,例如,std::set<T, std::less<T>>不会有一个透明的比较,而是std::set<T, std::less<>> …

c++ c++-faq c++14

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

如何从<chrono>获得int milli和float秒的持续时间?

我正在尝试使用计时库来定时器和持续时间.

我希望能够Duration frameStart;(从app开始)和a Duration frameDelta;(帧之间的时间)

我需要能够以frameDelta毫秒和浮点秒的形式获得持续时间.

你如何使用新的c ++ 11 <chrono>库做到这一点?我一直在努力和谷歌搜索(信息稀疏).代码是模板化的,需要特殊的演员和东西,我无法弄清楚如何正确使用这个库.

c++ timer c++11 c++-chrono

75
推荐指数
4
解决办法
12万
查看次数

C++ 11:为什么std :: condition_variable使用std :: unique_lock?

我对std::unique_lock工作时的作用感到有些困惑std::condition_variable.据我理解的文档,std::unique_lock基本上是一个臃肿锁定挡板,以交换两个锁之间的状态的可能性.

到目前为止我已经pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)用于此目的(我猜这是STL在posix上使用的).它需要一个互斥锁,而不是锁.

这有什么区别?std::condition_variable处理std::unique_lock优化的事实是什么?如果是这样,它究竟是如何更快?

c++ multithreading mutex c++11

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

获取std :: future的状态

是否可以检查a std::future是否已经完成?据我所知,唯一的方法就是调用wait_for零持续时间并检查状态是否ready存在,但是有更好的方法吗?

c++ multithreading future c++11

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

如何在Mac终端中使用C++ 11支持编译C++

我想在Mac终端中编译C++ 11源代码但是失败了.我试过g++ -std=c++11,g++ -std=c++0x,g++ -std=gnu++11g++ -std=gnu++0x,但毫无效果.终端总是读unrecognized command line option.但是,这样的g++ -std=gnu事情工作正常(当然C++ 11源代码无法通过).

我应该使用哪个选项来启用C++ 11支持?

顺便说一句,我正在使用的命令行工具安装在Xcode中,我很确定它们是最新的.

c++ macos terminal g++ c++11

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

什么是构造函数继承?

在C++ 11中,继承构造函数意味着什么?如果它是我认为的(基类构造函数被带入派生类的范围),它对我的​​代码有什么影响?这样的功能有哪些应用?

c++ inheritance constructor c++11

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

为什么使用QVector(Qt)而不是std :: vector

我是C++和Qt的新手,但我非常擅长C#/ Java.

关键是我喜欢跨平台,但我和Qt混淆了.是不是std::vector已经跨平台了,Qt不提供相当于非跨平台的东西吗?

另外如何FileQFile不同?

链接会很好,谢谢:)

c++ qt vector

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

Visual Studio 2012中的Google Test

我正在尝试开始进行单元测试.我下载了最新版本的gtest,并将其解压缩到A:\gtest指定的指令中,我打开了gtest.sln.如果我同意更新它,Visual Studio只允许我打开sln.然后,当我尝试构建时,我遇到了一堆错误:

1>------ Build started: Project: gtest, Configuration: Debug Win32 ------
1>  gtest-all.cc
1>a:\gtest\include\gtest\gtest-printers.h(550): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>a:\gtest\include\gtest\gtest-printers.h(558): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>a:\gtest\include\gtest\internal\gtest-param-util-generated.h(4017): error C2977: 'std::tuple' : too many template arguments
1>          b:\program files (x86)\microsoft visual studio 2012\vc\include\utility(73) : see declaration of 'std::tuple'
1>          a:\gtest\include\gtest\internal\gtest-param-util-generated.h(4249) …
Run Code Online (Sandbox Code Playgroud)

c++ googletest visual-c++ c++11 visual-studio-2012

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