std相关内容

scanf 格式输入的 cin 类比是什么?

使用 scanf,通常有一种直接获取格式化输入的方法: 1) 大于 0 且小于 1 的实数行.以“x"结尾,例如:0.32432523x scanf("0.%[0-9]x", &number); 2) 行表示格式为:30+28=58 scanf(":%d+%d=%99s", &number1, &number2, &total); cin的解决方法是什么,只用标准库? 解决方案 ..
发布时间:2021-12-21 17:48:15 C/C++开发

无法使用 fscanf() 读取一行

我正在尝试使用以下代码读取一行: while(fscanf(f, "%[^\n\r]s", cLine) != EOF ){/* 用 cLine 做一些事情 */} 但不知何故,我每次都只得到第一行.这是阅读一行的糟糕方式吗?我应该修复什么才能使其按预期工作? 解决方案 使用 fscanf() 函数几乎总是一个坏主意,因为它可以离开您的文件失败时指针位于未知位置. 我更喜欢使用 ..
发布时间:2021-12-21 17:41:38 其他开发

如何确保 std::random_shuffle 总是产生不同的结果?

是否有一些类似于 srand() 的函数,我需要调用它来确保 std::random_shuffle() 总是产生不同的结果?即如果我用相同的数据多次调用它,我希望每次的顺序都不同.我如何确保这一点? 解决方案 std::random_shuffle 有两种形式.一个接受 2 个参数(开始/结束迭代器),一个接受 3 个参数(开始/结束迭代器和一个随机生成器). 第一种形式使用 st ..
发布时间:2021-12-21 16:10:18 C/C++开发

获取 STL 向量中大于某个值的元素的所有位置

我想知道如何找到验证特定条件(例如大于)的元素的索引位置.例如,如果我有一个 int 值向量 vectorⅤ; V 包含值 3 2 5 8 2 1 10 4 7 并且我想获取大于 5 的元素的所有 索引位置.我知道 std::find_if 但根据文档,它只找到满足条件的第一个元素. 解决方案 Loop std::find_if,从上次停止的地方开始. 示例(查看效果): ..
发布时间:2021-12-21 13:53:59 C/C++开发

在 C++ 中检查是否 std::vector包含一定的价值

是否有任何内置函数告诉我我的向量是否包含某个元素例如 std::vectorv;v.push_back("abc");v.push_back("xyz");if (v.contains("abc"))//我正在寻找一个这样的功能,有没有//这样的函数还是我需要遍历整个向量? 解决方案 您可以使用 std::find如下: if (std::find(v.begin(), v.end(), ..
发布时间:2021-12-21 13:49:05 C/C++开发

如何反转 C++ 向量?

C++ 中是否有内置的向量函数来反转向量? 或者你只需​​要手动完成? 解决方案 algorithm 标题中有一个函数 std::reverse 用于此目的. #include #include int main() {std::vector一个;std::reverse(a.begin(), a.end());返回0;} ..
发布时间:2021-12-21 13:48:45 C/C++开发

将一行 csv 文件拆分为 std::vector?

我有一个函数可以逐行读取 CSV 文件.对于每一行,它会将这条线分割成一个向量.执行此操作的代码是 std::stringstream ss(sText);std::string 项目;while(std::getline(ss, item, ',')){m_vecFields.push_back(item);} 这工作正常,除非它读取最后一个值为空的行.例如, text1,tex2, ..
发布时间:2021-12-21 13:47:01 C/C++开发

清除向量会影响其容量吗?

我实例化一个 std::vector foo(1000). foo.size() 现在是 1000,foo.capacity() 也是 1000. 如果我用 foo.clear() 清除向量,size() 现在是 0,但是 capacity() 是什么>?标准对此有任何说明吗? 解决方案 不,它没有.向量的容量永远不会减少.这不是标准规定的,但在 VC++ 和 g++ 的标准库 ..
发布时间:2021-12-21 13:33:52 C/C++开发

std::vector 向下调整大小

C++ 标准似乎没有声明任何一方对容量的副作用resize(n),用 n 或 clear(). 它确实声明了 push_back 和 pop_back - O(1) 的摊销成本 我可以设想一个执行通常类型的容量更改的实现ala CLRS 算法(例如,放大时加倍,将 size 减小到 ..
发布时间:2021-12-21 13:33:22 C/C++开发

按对象属性搜索对象向量

我试图找出一种在向量中查找某个对象的索引的好方法 - 通过将字符串与对象中的成员字段进行比较. 像这样: find(vector.begin(), vector.end(), [object where obj.getName() == myString]) 我搜索没有成功 - 也许我不完全明白要寻找什么. 解决方案 您可以使用 std::find_if 带有合适的函子.在此示例 ..
发布时间:2021-12-18 23:01:18 C/C++开发

什么时候需要使用标志 -stdlib=libstdc++?

gcc 编译时,编译器和链接器什么时候需要使用标志-stdlib=libstdc++? 编译器会自动使用libstdc++吗? 我在 Ubuntu 13.10 上使用 gcc4.8.2,我想使用 c++11 标准.我已经将 -std=c++11 传递给编译器. 解决方案 在 Linux 上:一般来说,所有常用的 linux 发行版都会默认使用 libstdc++,并且所有现代版 ..
发布时间:2021-12-18 22:56:59 C/C++开发

错误 C2065:“cout":未声明的标识符

我正在处理我的编程任务的“驱动程序"部分,但我不断收到这个荒谬的错误: 错误 C2065:'cout':未声明的标识符 我什至尝试过使用 std::cout 但我收到另一个错误消息:IntelliSense: namespace "std" has no member "cout" 当我有声明 using namespace std,包括 iostream + 我什至尝试使用 ostr ..
发布时间:2021-12-14 19:04:14 C/C++开发

带有常量引用的 std::remove_const

为什么 std::remove_const 不将 const T& 转换为 T&?这个公认的相当人为的例子证明了我的问题: #include int main(){int a = 42;std::remove_const::type b(a);//这个断言失败静态断言(!std::is_same::value,“为什么 r ..
发布时间:2021-12-13 19:14:58 C/C++开发

更改 std::map 中元素键的最快方法是什么

我理解人们不能这样做的原因(重新平衡和其他东西): 迭代器 i = m.find(33);如果(我!= m.end())i->第一个= 22; 但到目前为止,更改键的唯一方法(我知道)是从树中完全删除节点,然后使用不同的键插入值: 迭代器 i = m.find(33);如果(我!= m.end()){值= i->秒;m.erase(i);m[22] = 值;} 出于更多原因,这对我来说似乎 ..
发布时间:2021-12-10 16:31:13 C/C++开发

跟踪插入顺序的 std::map ?

我目前有一个 std::map 将一个整数值存储到一个唯一的字符串标识符中,我确实使用该字符串进行查找.它主要做我想要的,除了它不跟踪插入顺序.因此,当我迭代地图以打印出值时,它们会根据字符串进行排序;但我希望它们按照(第一次)插入的顺序进行排序. 我想过使用 vector> 代替,但我需要查找字符串并将整数值增加大约 10,000,000 次,所以我不知道std::vector 是否会明显 ..
发布时间:2021-12-10 15:51:10 C/C++开发

使用值对 std::map 进行排序

我需要按值而不是键对 std::map 进行排序.有什么简单的方法吗? 我从以下线程中得到了一个解决方案: std::map 按数据排序? 有更好的解决方案吗? map测试地图;//一些代码来生成地图中的值.排序(testMap.begin(),testMap.end());//有没有这样的函数来对地图进行排序? 解决方案 即使正确答案已经发布,我还是想添加一个演示,说明如何干 ..
发布时间:2021-12-10 15:51:03 C/C++开发