Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

4
ADL为什么找不到功能模板?
C ++规范的哪一部分限制了依赖于参数的查找,无法在关联的命名空间集中查找函数模板?换句话说,为什么main下面的最后一个调用无法编译? namespace ns { struct foo {}; template<int i> void frob(foo const&) {} void non_template(foo const&) {} } int main() { ns::foo f; non_template(f); // This is fine. frob<0>(f); // This is not. }


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?

7
在std :: multiset中,如果找到一个元素,则有一个函数或算法可以擦除一个样本(单一或重复)
也许这是重复的,但是我没有找到任何搜索内容:erase(value)对std::multiset所有具有找到的值的元素调用时,将被删除。我能想到的唯一解决方案是: std::multiset<int>::iterator hit(mySet.find(5)); if (hit!= mySet.end()) mySet.erase(hit); 可以,但是我认为可能会更好。有任何想法吗 ?
83 c++  stl  multiset 


12
所有C ++运算符都返回什么吗?
我使用过的所有C ++运算符都返回某些内容,例如,该+运算符返回加法的结果。 是所有C ++运算符都返回什么,还是有些C ++运算符不返回任何东西?
83 c++  operators 

4
C ++中逗号运算符与return的不同行为?
这(注意逗号运算符): #include <iostream> int main() { int x; x = 2, 3; std::cout << x << "\n"; return 0; } 输出2。 但是,如果return与逗号运算符一起使用,则: #include <iostream> int f() { return 2, 3; } int main() { int x; x = f(); std::cout << x << "\n"; return 0; } 输出3。 为什么逗号运算符的行为与众不同return?

7
如何将可变数量的参数传递给printf / sprintf
我有一个类,其中包含一个“错误”函数,该函数将格式化某些文本。我想接受可变数量的参数,然后使用printf格式化它们。 例: class MyClass { public: void Error(const char* format, ...); }; Error方法应该接受参数,调用printf / sprintf对其进行格式化,然后对其进行处理。我不想自己写所有格式,因此尝试弄清楚如何使用现有格式很有意义。


4
使用Boost库程序选项的必需参数和可选参数
我正在使用Boost程序选项库来解析命令行参数。 我有以下要求: 一旦提供了“帮助”,所有其他选项都是可选的。 一旦不提供“帮助”,则所有其他选项都是必需的。 我该如何处理?这是我处理此问题的代码,我发现它非常多余,我认为必须很容易做到,对吗? #include <boost/program_options.hpp> #include <iostream> #include <sstream> namespace po = boost::program_options; bool process_command_line(int argc, char** argv, std::string& host, std::string& port, std::string& configDir) { int iport; try { po::options_description desc("Program Usage", 1024, 512); desc.add_options() ("help", "produce help message") ("host,h", po::value<std::string>(&host), "set the host server") ("port,p", po::value<int>(&iport), "set …


1
STL字符特征的重点是什么?
我注意到在我的SGI STL参考副本中,有一个有关角色特征的页面,但是我看不到如何使用这些特征?它们是否替换了string.h函数?似乎没有使用它们std::string,例如length()on上的方法std::string未使用Character Traitslength()方法。为什么存在性格特征,并且在实践中曾经使用过它们?


4
如何在map和unordered_map之间选择?
假设我想使用字符串作为键来映射数据。什么容器应该怎么选择,map还是unordered_map?unordered_map占用更多的内存,所以让我们假设内存不是问题,而关注的是速度。 unordered_map通常应该给出O(1)的平均复杂度,而O(n)的最坏情况。在什么情况下会达到O(n)?什么时候map可以获得比更高的时间效率unordered_map?当n小时会发生吗? 假设我将STLunordered_map与默认的haser Vs一起使用。地图。字符串是关键。 如果我要遍历元素而不是每次都访问单个元素,我应该优先map吗?

4
如何为地图创建自己的比较器?
typedef map<string, string> myMap; 在中插入新对时myMap,它将使用该键string通过自己的字符串比较器进行比较。是否可以覆盖该比较器?例如,我想通过键string的长度而不是字母来比较键。还是有其他方法可以对地图进行排序?
83 c++  stl  stdmap 

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.