Questions tagged «std»

C ++标准库及其名称空间。与[c ++]结合使用。

8
在C ++中使用自定义比较器声明priority_queue
我试图声明一个priority_queue of nodes,bool Compare(Node a, Node b)用作比较器函数(在节点类外部)。 我目前拥有的是: priority_queue<Node, vector<Node>, Compare> openSet; 由于某种原因,我越来越 Error: "Compare" is not a type name 将声明更改为 priority_queue <Node, vector<Node>, bool Compare> 给我 Error: expected a '>' 我也尝试过: priority_queue<Node, vector<Node>, Compare()> openSet; priority_queue<Node, vector<Node>, bool Compare()> openSet; priority_queue<Node, vector<Node>, Compare<Node, Node>> openSet; 我应该如何正确声明我的身份priority_queue?

2
std :: is_function如何实现?
以下是如何实现的std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (来自CPP参考) 在我看来,int在此定义下,an 将是一个函数。我想念什么?
82 c++  templates  std  sfinae 



8
将std :: __ cxx11 :: string转换为std :: string
我使用c ++ 11,但也使用一些未配置的库,并且需要某种类型转换。特别是,我需要一种转换std::__cxx11::string为常规的方法std::string,但是谷歌搜索找不到这样做的方法,因此放在(string)前面是行不通的。 如果不进行转换,则会出现如下链接错误: undefined reference to `H5::CompType::insertMember(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, H5::DataType const&) const'
73 c++  string  c++11  types  std 

25
错误C2065:“ cout”:未声明的标识符
我正在编程任务的“驱动程序”部分工作,并且不断收到这个荒谬的错误: 错误C2065:“ cout”:未声明的标识符 我什至尝试使用std :: cout,但又收到另一个错误消息:IntelliSense:当我声明使用命名空间std时,命名空间“ std”没有成员“ cout” ,包括iostream +我什至尝试使用ostream 我知道这是一个标准的菜鸟问题,但这困扰了我,我是新手(意思是:我之前已经编程过……) #include <iostream> using namespace std; int main () { cout << "hey" << endl; return 0; } 我正在使用Visual Studio 2010并运行Windows7。所有.h文件均具有“ using namespace std”,并包括iostream和ostream。

5
为什么我得到的字符串没有命名为Error?
game.cpp #include <iostream> #include <string> #include <sstream> #include "game.h" #include "board.h" #include "piece.h" using namespace std; 游戏 #ifndef GAME_H #define GAME_H #include <string> class Game { private: string white; string black; string title; public: Game(istream&, ostream&); void display(colour, short); }; #endif 错误是: game.h:8 error: 'string' does not name a type …
71 c++  string  std 

12
使用值对std :: map进行排序
我需要std::map按值而不是按键排序。有一个简单的方法吗? 我从下面的线程中得到了一个解决方案: std :: map按数据排序? 有更好的解决方案吗? map<long, double> testMap; // some code to generate the values in the map. sort(testMap.begin(), testMap.end()); // is there any function like this to sort the map?
71 c++  dictionary  std 

4
那将是“你好,世界!” 例如“ std :: ref”?
有人可以举一个简单的例子来演示功能std::ref吗?我的意思是一个示例,其中仅在无法解释时才使用其他一些构造(如元组或数据类型模板)的例子std::ref。 我在std::ref 这里和这里发现了两个问题。但是在第一个中,它涉及编译器中的错误;在第二个中,std::ref它不包含使用示例,std::ref它们涉及元组和数据类型模板,这使得对这些示例的理解变得复杂。
70 c++  c++11  std  ref 

2
为什么shared_ptr仅使用一个时,unique_ptr会使用两个模板参数?
双方unique_ptr并shared_ptr接受定制的析构函数他们所拥有的对象上调用。但在的情况下unique_ptr,析构函数作为一个模板参数传递类,而类型shared_ptr的自定义析构函数将被指定为一个模板参数的构造函数。 template <class T, class D = default_delete<T>> class unique_ptr { unique_ptr(T*, D&); //simplified ... }; 和 template<class T> class shared_ptr { template<typename D> shared_ptr(T*, D); //simplified ... }; 我不明白为什么会有这样的差异。有什么要求?

5
为什么std :: map没有const访问器?
std :: map上[]运算符的声明是这样的: T& operator[] ( const key_type& x ); 不是这个原因吗? T& operator[] ( const key_type& x ); const T& operator[] const ( const key_type& x ); 因为这在您每次需要以const方法访问成员映射时都会非常有用。
69 c++  c++11  std 

2
为什么不能保证std :: hash具有确定性?
此后,我们使用N4140(C ++ 14标准)。 根据第17.6.3.4节哈希要求, 返回的值应仅取决于k 程序持续时间内的参数。 [注意:因此,对于给定的程序执行,h(k)具有相同值的表达式的所有求值都会 k产生相同的结果。—尾注] 和§12年9月20日类模板哈希说 ... 实例hash<Key>应: (1.1)-满足哈希要求(17.6.3.4)... (1.2)-... 这意味着,如果重新启动程序,则哈希值value(即hash<decltype(value)>(value))可能采用不同的值。 但为什么?此限制不在C ++ 11标准中,而是在C ++ 14,C ++ 17和C ++ 20标准中。作为用户(不是STL开发人员),如果std::hash具有确定性,那将非常有用。实现确定性哈希函数有任何数学困难吗?但是我们日常使用的哈希函数(例如,不建议使用md5sum或更安全的函数sha256)都是确定性的。有效率问题吗?

2
std :: pair中的初始化列表
这段代码: #include <iostream> #include <string> std::pair<std::initializer_list<std::string>, int> groups{ { "A", "B" }, 0 }; int main() { for (const auto& i : groups.first) { std::cout << i << '\n'; } return 0; } 编译但返回段错误。为什么? 在gcc 8.3.0和在线编译器上进行了测试。
26 c++  std  std-pair 

1
为什么std :: swap在Clang / Win下的vector <bool>元素上不起作用?
我有这样的代码: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } 关于是否理智的争论,在vector&lt;bool&gt;以下方面效果很好: Mac版Clang Windows的Visual Studio 适用于Linux的GCC 然后,我尝试在Windows上使用Clang构建它,并收到以下错误(摘要): error: no matching function for call to 'swap' std::swap(vb[0], vb[1]); ^~~~~~~~~ note: candidate function [with _Ty = std::_Vb_reference&lt;std::_Wrap_alloc&lt;std::allocator&lt;unsigned int&gt; &gt; &gt;, $1 = void] not viable: expects an l-value for …

1
为什么仅当我的容器包含32个以上元素时,std :: sort才会调用swap?
您好,我有一个简单的问题: class A { public: A(int); A(const A&amp;); A&amp; operator=(const A&amp;); ~A(); private: int* ptr_; friend bool operator&lt;(const A&amp;, const A&amp;); friend void swap(A&amp;, A&amp;); }; A::A(int x) : ptr_(new int(x)) {} A::A(const A&amp; rhs) : ptr_(rhs.ptr_ ? new int(*rhs.ptr_) : nullptr) {} A&amp; A::operator = (const A &amp; rhs) …
13 c++  std  swap 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.