相关疑难解决方法(0)

在Visual C++编译器2012年11月CTP中使用std :: initializer_list

我想std::initializer_list在Visual Studio 2012中使用s,就像这个例子中的人一样.我的操作系统是Windows 8 x64.

因此,我最近安装了Visual C++编译器2012年11月的CTP,并且正如Microsoft所提到的,我更改了项目的平台工具集以使用新的更新编译器.

但即便这样做,也没有可用std::initializer_list<initializer_list>头和头.但微软的链接网站告诉我(在标题"概述"下)初始化程序列表可用于该更新.我重新启动了IDE和我的电脑.我不确定是否可能是因为我(遗憾地)使用德语版的Visual Studio并且编译器更新是英文的.我究竟做错了什么?

更新:尝试编译auto a = { 0 };被IntelliSense批评的行,编译器输出显示'Microsoft Visual C++ Compiler Nov 2012 CTP' is for testing purposes only.然后编译器崩溃,并出现一个读取的错误窗口Microsoft (R) C/C++ Compiler Driver has stopped working.没有任何新语法,一切都可以编译并且可以在选择的新编译器中正常工作.

c++ initializer-list visual-c++ c++11 visual-studio-2012

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

C++ STL,常量迭代器,find()

我目前正在学习STL,我对find和const迭代器有一些不确定性.假设我有一个find函数:

some_stl_container::const_iterator found = myContainer.find(value);
Run Code Online (Sandbox Code Playgroud)

在那之后,我应该检查我得到的found另一个const_iterator,或者只是对一个迭代器进行检查是有效的.基本上这样做会有任何区别:

if(found!=myContainer.cend())
Run Code Online (Sandbox Code Playgroud)

还有这个:

if(found!=myContainer.end())
Run Code Online (Sandbox Code Playgroud)

第一个看起来更准确(至少对我而言),但第二个应该也能正常工作,对吗?

c++ iterator stl constants find

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

C++中的C++标准容器和STL容器

最近我正在开发一个c ++项目,我不允许使用标准模板库或任何其他模板.

在做了一些研究后,我很困惑.什么是容器属于标准库,而其他容器属于标准模板库?或者我们没有说标准库的容器,对吗?

矢量是否是一个容器?矢量是标准库的类还是属于STL?

我希望在标准库中实现一些结构的列表,我可以使用列表或向量吗?

c++ stl c++-standard-library

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

什么是"Portable C++"?

在互联网上,我看到声称用便携式C++编写的库,好像它是一个(可能是非官方的)标准.

什么是可移植的C++有一个精确的定义,如果有,它是什么?

我不是要求编写可移植代码的常用做法,但如果真的有什么我们称之为"可移植的c ++".

c++

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

C++ 标准向量 resize() 函数

resize() 根据给定的大小添加/删除元素。Reserve() 保留内存空间,它不会重新分配内存。我的问题是 resize 是否也与向量的容量相同,只是不会增加?

要添加,将组合:

 std::vector<X> vector;
 vector.reserve(5);
 vector.resize(5); 
Run Code Online (Sandbox Code Playgroud)

有道理吗?是多余的吗?这里的目标是能够覆盖向量中的值,而无需向量分配任何额外空间。

c++ resize stdvector

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

C++ STL标准有变化吗?

每当我使用STL在C++中实现某些东西时,我一直虔诚地使用SGI的标准模板库程序员指南(STLPG)作为参考手册.直到昨天它一直没有让我失望,但昨天我正在使用std :: vector工作,并与我的一位同事进行配对编程,他告诉我使用assign方法.我没有认识到这种方法对我来说很不寻常,所以我开始挖掘STLPG 的std :: vector部分并且没有提到任何assign方法.我的同事向我指出cpluplus.com页面上的std ::矢量你瞧它有一对夫妇的其他方法,比如沿着是,我还从来没有见过.

这让我很困惑,所以我在这个问题上去了中世纪并挖到了*/usr/include/c ++/4.1.2/bits/stl_vector.h*,这是版权所有Hewlett-Packard公司1994和Silicon Graphics Computer Systems,Inc.1996和它包含了assign的实现,并且没有任何特别的评论,提到为什么在最近的版权所有者自己的文档中省略了它们.

有没有比我更熟练的人可以阐明社区存在这些差异的原因以及我可以信赖的在线参考手册是否符合所有现代STL实施?

c++ stl

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

C++中的Realloc等价物

是的,另一种reallocstd::vector问题.我知道你要说什么,我同意,忘记手动内存分配,只需使用一个std::vector.不幸的是,我的教授禁止我使用STL的任何东西进行这项任务.

所以,是的,我有一个动态数组,T我需要它可以调整大小,我不能使用std::vector.我可以回到黑暗时代,malloc与家人一起完成整个事情,但如果我可以使用new那将是非常棒的.

我已经阅读了大量的std::vector帖子,其中每个人都说"不,你不能这样做,使用",但它们都是在2011年8月之前发布的,我希望自C +曙光以来可能有所改变的希望+11.那么告诉我,我是幸运的,还是我必须恢复到C风格的内存分配?

c++ dynamic-memory-allocation

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

C ++ STL容器要求-后置条件混乱

我目前正在考虑实现一个自定义容器,该容器需要与STL算法兼容,因此必须满足此处所述的C ++容器要求。

Methods and operators表在该文档中指出,表达式a = b的后置条件为a == b。我对此深感困惑。如该表达式的表项所示:

销毁或移动-分配a来自的元素b

据我了解,移动对象时伴随着这样的期望,即被移动的对象(源对象?)将处于有效但未定义的状态。因此,a == b我认为不能满足该条件。

我在这里想念什么?

c++ containers

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

C++“无原始循环”而不损失性能

所以“新(旧)大事”是 C++ 中的“无原始循环”。我正在尝试以这种方式编写代码,但似乎效率很低。是的,有些 STL 算法可以做任何事情,但它们似乎效率不高。

例如,我有一种情况,我想要一个指向节点数组中得分最高的节点的指针。确定该分数是一项代价高昂的浮点运算。所以我实现了STL算法版本并将其与原始循环进行了比较:

#include <cfloat>
#include <iostream>
#include <array>
#include <algorithm>
#include <numeric>

static int counter;

class Node {
public:
    auto Score() const -> double {
        std::cout << "complex calculation\n";
        counter++;
        return 1;
    }
};

int main()
{
    
    std::array<Node, 10> nodes;
    
    counter = 0;
    Node const* nodePtr = std::max_element(std::cbegin(nodes), std::cend(nodes),
        [](Node const& node1, Node const& node2) {
            return node1.Score() < node2.Score();
        });
    std::cout << "algorithm count " << counter << std::endl;
    
    counter = 0;
    double maxScore = …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm loops

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

MacPorts Clang 3.1缺少标准库安装?

我正在尝试使用MacPorts安装的clang在C++ 11中初始化列表功能.编译这个简单的代码时:

#include <vector>

int main()
{
    std::vector<int> a {1, 3, 5};
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

stephen-chus-mac-pro:~ stephenchu$ clang -std=c++0x -c text.cxx -I/opt/local/include -v
clang version 3.1 (trunk 154872)
Target: x86_64-apple-darwin10.8.0
Thread model: posix
 "/opt/local/libexec/llvm-3.1/bin/clang" -cc1 -triple x86_64-apple-macosx10.6.0 -emit-obj -mrelax-all -disable-free -main-file-name text.cxx -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 127.2 -v -coverage-file text.o -resource-dir /opt/local/libexec/llvm-3.1/bin/../lib/clang/3.1 -I /opt/local/include -fmodule-cache-path /var/folders/UL/ULMxdJJtEQuI+WuToNAFpk+++TI/-Tmp-/clang-module-cache -std=c++0x -fdeprecated-macro -fdebug-compilation-dir /Users/stephenchu -ferror-limit 19 -fmessage-length 80 -stack-protector 1 -mstackrealign -fblocks -fobjc-dispatch-method=mixed -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o …
Run Code Online (Sandbox Code Playgroud)

c++ macports clang c++-standard-library c++11

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