std相关内容
在C++中实现回调函数时,我是否还应该使用C风格的函数指针: void (*callbackFunc)(int); 或者我应该使用 std::function: std::function回调函数; 解决方案 简而言之,除非有理由不使用,否则请使用 std::function. 函数指针的缺点是不能捕获某些上下文.例如,您将无法将 lambda 函数作为捕获某些上下文变量的回调传递
..
我想要做什么:我想对 2、3 或 N 个向量进行排序,锁定在一起,不将它们复制到一个元组中.也就是说,把冗长放在一边,比如: vectorv1 = { 1, 2, 3, 4, 5};向量v2 = { 11, 22, 33, 44, 55};向量v3 = {111, 222, 333, 444, 555};typedef 元组tup_t;sort(zip
..
当试图回答另一个 Stackoverflow 问题,我意识到这个简单的 C++11 代码段隐式地阻塞了调用线程: std::async(std::launch::async, run_async_task) 对我来说,这似乎是规范的 C++11 异步启动任务而不关心结果的方式.相反,为了实现这一点,必须明显地创建和分离一个线程(参见 answer 提到的问题).> 所以这是我的问题:std:
..
我用的是c++11,但也有一些库没有为它配置,需要一些类型转换.特别是我需要一种将 std::__cxx11::string 转换为常规 std::string 的方法,但是谷歌搜索我找不到这样做的方法并把前面的(string)不起作用. 如果我不转换,我会收到这样的链接器错误: 未定义引用`H5::CompType::insertMember(std::__cxx11::basic_st
..
我有这样的代码: for (std::list::iterator i=items.begin();i!=items.end();i++){bool isActive = (*i)->update();//如果(!isActive)//items.remove(*i);//别的other_code_involving(*i);}items.remove_if(CheckItemNotActive
..
我要做的就是检查向量中是否存在某个元素,以便我可以处理每种情况. if ( item_present )做这个();别的去做(); 解决方案 您可以使用 std::find from : #include #include 向量vec;//可以有其他数据类型而不是int但必须与项目相同的数据类型std::find(vec.begin(), vec.end(), item) != vec.e
..
在 C++ 中是否可以用另一个字符串替换部分字符串? 基本上,我想这样做: QString string("hello $name");string.replace("$name", "Somename"); 但我想使用标准 C++ 库. 解决方案 有一个函数可以在字符串中查找子字符串 (find),以及用另一个字符串替换字符串中特定范围的函数(replace),因此您可以将它们
..
有人带来了这篇文章 我注意到声称(我在意译) STL 术语被误用于指代整个 C++ 标准库,而不是取自 SGI STL 的部分. (...) 它指的是“STL",尽管事实上很少有人仍然使用 STL(它是在 SGI 设计的). C++ 标准库的部分内容基于 STL 的部分内容,正是这些部分被许多人(包括几位作者和臭名昭著的错误缠身的 cplusplus.com)称为“STL".然而,
..
其他人告诉我,在代码中编写 using namespace std; 是错误的,我应该使用 std::cout 和 std::cin 直接代替. 为什么 using namespace std; 被认为是一种不好的做法?它是低效的还是有风险声明不明确的变量(与 std 命名空间中的函数同名的变量)?它会影响性能吗? 解决方案 这与性能完全无关.但请考虑一下:您正在使用两个名为 Foo
..
在像这样的 for 循环中使用自动变量时,有没有办法擦除特定元素? for(auto a: m_Connections){如果(某事){//删除这个元素}} 我知道我可以说 for(auto it=m_map.begin() ... 或 for(map::iterator it=m_map.begin() ... 并手动增加迭代器(和擦除),但如果我能用更少的代码行来做到这一点,我会更
..
这个答案和大量重复表明我应该使用 #include 对于我从 C++ 代码中提取的 C 头文件,我应该用 std::* 调用它们. 我一直在这样做,但我注意到一个例外.std::assert 似乎没有被定义,即使我正确地#include . 这是怎么回事?这是实施疏忽,还是实际例外? 解决方案 assert 是一个宏,而不是一个函数.因此,它需要与普通的旧 asser
..
我一直在倾注 7z 存档格式的格式描述和源代码,但我仍然无法编写有效的容器.我假设我可以创建一个空容器......无论如何这是我的开始: std::ofstream ofs(archivename.c_str(), std::ios::binary|std::ios::trunc);字节签名[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};字节主要 = 0;次要字
..
我一直在倾注 7z 存档格式的格式描述和源代码,但我仍然无法编写有效的容器.我假设我可以创建一个空容器......无论如何这是我的开始: std::ofstream ofs(archivename.c_str(), std::ios::binary|std::ios::trunc);字节签名[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};字节主要 = 0;次要字
..
我从 c++11 开始,constexpr 和模板元编程似乎是在微型微控制器上节省稀缺内存的好方法. 有没有办法写一个模板来展平constexpr数组的列表,什么我需要的是一种方法: constexpr std::arraya1 = {1,2,3};constexpr std::arraya2 = {4,5};constexpr auto a3 = make_flattened_array
..
我在使用 std::begin() 和 std::end()(来自 iterator 库)和 c- 时遇到问题样式数组参数. void SetOrigin(const double i_point[3]) {向量 v;标准::复制(std::begin(i_point),std::end(i_point),v.begin());this->setOrigin(v);} 这会导致 Visual
..
#include #include int main(){std::srand(时间(0));返回0;} 错误信息 此代码编译并运行良好.但是错误消息并没有消失,这让我很恼火.也许有人解决了这个问题. 我的系统信息. Linux 桌面 4.6.4-1-ARCH #1 SMP PREEMPT Mon Jul 11 19:12:32 CEST 2016 x86_64 GNU/Lin
..
std::vector一种;std::vector乙;std::vectorC; 我想通过将 b 和 c 的元素附加到 a 来连接这三个向量.哪种方法最好,为什么? 1) 通过使用 vector::insert: a.reserve(a.size() + b.size() + c.size());a.insert(a.end(), b.begin(), b.end());a.insert
..
我有这个包含 std::is_same_v 的代码可用于 C++17.但由于工具链的限制,我一直坚持使用 C++14. template使用 IteratorOnly = std::enable_if_t, O>; 如何将 std::is_same_v 替换为 std::is_same?是否有任何解决方法可以仅使用 C++1
..
我想在一个类中定义一个静态映射,它将具有一个结构作为它的键和值.我读过一个 '
..
我尝试使用 std::map 的键作为 Struct,但在找到键时失败.这里有什么问题?查找未找到但插入不会更改地图中的计数..... #pragma once#include 结构 OccTestdef{民众:整数类型;整数长度;OccTestdef(int typ, int length) :Typ(typ), Length(length) {};布尔运算符测试图;typedef std::
..