将向量的向量打印到 ostream

2023-11-30

请考虑以下代码。我正在尝试将向量的向量输出到 ostream。

#include <iterator>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

template<typename T>
std::ostream &operator <<(std::ostream &os, const std::vector<T> &v) {
    using namespace std;
    copy(v.begin(), v.end(), ostream_iterator<T>(os, "\n"));
    return os;
}

int main() {
    using namespace std;
    vector<string> v1;
    cout << v1;
    vector<vector<string> > v2;
    cout << v2;
    return 0;
}

我输出字符串向量的语句有效。我输出字符串向量的向量却没有。我正在使用 g++ 4.7.0。我尝试过使用和不使用 -std=c++11 标志。在 C++11 模式下,它在半页错误中给出了这一行。

error: cannot bind 'std::ostream_iterator<std::vector<std::basic_string<char> >, char, std::char_traits<char> >::ostream_type {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'

我想我不明白这意味着什么。有人可以向我解释一下吗?我或多或少知道什么是右值引用,但我不明白为什么std::basic_ostream<char>不会绑定到std::basic_ostream<char>&&。也许我还不够了解。有没有更好的方法来做到这一点?

提前致谢。


您收到的错误有点误导。当我尝试编译你的程序时,我不得不深入研究模板呕吐物,最后我得到了我认为发生的事情:

error: no match for 'operator<<' in '*((std::ostream_iterator<std::vector<std::basic_string<char> >, char, std::char_traits<char> >*)this)->std::ostream_iterator<std::vector<std::basic_string<char> >, char, std::char_traits<char> >::_M_stream << __value'

基本上,当您调用复制算法时,它使用输出迭代器,该迭代器使用命名空间 std 中的 的重载(因为那是 IT 所在的位置)。

因此,您需要做的是在名称空间 std 中为向量模板声明流运算符。将您的代码包围起来namespace std {}看看会发生什么......

应该注意的是,您所做的基本上是修改 std::vector 并向其添加以前不存在的行为。这样做是非标准的、未定义的,并且很容易妨碍您。您可以考虑其他选择。


我错误地认为这是一个 koenig 查找的事情。事实并非如此,问题是名称隐藏,类似于这里的类中发生的情况,您在基类中声明了某些内容的重载(而不是覆盖)。

标准命名空间声明了几个“operator <<。本质上你所拥有的是这样的:

void fun(int);

namespace Test {

  void fun() { fun(3); }

}

int main() {
    Test::fun();
}

请注意,您可以使用fun(int)来自全局命名空间或任何没有任何名为的函数的命名空间fun在里面。您不能从Test命名空间。

这就是为什么您使用全局声明的运算符 std命名空间。这std命名空间已经具有与您尝试提供的重载名称相同的事物,因此该重载对其中的所有事物都隐藏std。如果你可以放置一个 using 声明,事情就会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将向量的向量打印到 ostream 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p

随机推荐

  • OpenGL 离屏渲染

    我有一个应用程序 可以创建 3D 模型并从中导出图像 我用这个例子来做到这一点 include
  • 在 Glance Widget 中复制 Canvas 的最佳方式?

    在 Compose 中我们有方法Canvas 画线等 Glance中有类似的功能吗 如果没有 复制 Canvas 功能的最佳方法是什么 None
  • 为什么 sphinx 在同一行上格式化我的文档字符串参数

    我对 sphinx 比较陌生 想为我的项目生成文档 我的函数之一的示例可以在 Predict py 中找到 def arima rolling forecast training set testing set order solver l
  • 加载程序集和版本控制

    我正在考虑通过提供一些预定义的接口来向现有应用程序添加一些可扩展性 这些接口可以通过放置在特定位置并由应用程序拾取的 插件 来实现 应用程序的核心很少更新 而插件更新和部署则更加频繁 基本上 有这样的设置 in core assembly
  • 带有线性渐变的CSS过渡[重复]

    这个问题在这里已经有答案了 我正在尝试向一个按钮添加一个过渡 该按钮的背景是用 css 线性渐变制作的 但它不起作用 这是我的按钮的 CSS a button background webkit gradient linear left t
  • doctrine2 和 group_concat

    我一直在浏览文档 谷歌 但没有找到任何解决方案 有没有办法在没有本机mysql的情况下使用doctrine2 DQL 执行或模仿GROUP CONCAT eg SELECT u id u name GROUP CONCAT AS user
  • 错误:您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展

    我是 WordPress 新手 上传网站后我遇到了这个错误 该网站运行良好一段时间 然后就发生了这种情况 输入 URL 后 此文本将显示 您的 PHP 安装似乎缺少 WordPress 所需的 MySQL 扩展 转到 php ini 但找不
  • 使用自定义成员资格和角色提供程序在 MVC 中实现 IPrincipal 和 IIdentity

    我一直坚持自定义 iprincpal 和 iidentity 对象的实现 我现在花了一天的时间来搜索如何实施这些权利并用更多信息来扩展它 我想扩展信息 Context User Identity Name使用全名或其他名称等自定义变量 ED
  • 使用“if”语句检查后出现空指针异常

    我遇到了一个非常烦人的错误 说我遇到了空指针异常 但有一个 if 语句来检查文本是否为空 然后再继续 public String getFileData throws IOException String file name C Users
  • 使用 Passport js failureRedirect 方法发回数据

    我有一个 Passport js 本地注册策略 它使用 successRedirect 和 failureRedirect 方法 问题是 如果注册过程出现错误 Passport 只会重定向回注册表单 表单中没有任何数据 app post s
  • 您可以通过其中的符号对齐文本吗?

    我想显示这样的电子邮件地址列表 email protected email protected email protected email protected email protected hinxterpexterp email pro
  • VBA在循环期间在数组中存储多列然后返回值

    我有一个宏 它将用户定义的函数 代码中的 R ajseasonX13 应用于工作表 NSA 中的多个列 然后返回工作表 SA 中的值 问题是我的代码一次仅将该函数应用于一个列 一旦 VBA 不断在选项卡 NSA 和 SA 之间来回移动 结果
  • 如何在 Spring config.xml 中配置 Cron 时区?

    我有一个带有 Cron 任务的 Spring 配置 xml 文件 该任务在我的机器上定期执行 如何在 xml 文件中配置此任务以使用莫斯科时区 与我的时区不同
  • 更改浏览器缩放级别

    我需要在我的网站上创建 2 个按钮来更改浏览器缩放级别 由于图像大小和布局问题 我请求浏览器缩放而不是 css 缩放 嗯 这可能吗 我听到了相互矛盾的报道 尽管在 Firefox 中不起作用 但在 IE 和 chrome 中可以使用 img
  • sci-kit learn:使用 X.reshape(-1, 1) 重塑数据

    我正在训练一个用于文本分类的 python 2 7 11 分类器 在运行时我收到一条已弃用的警告消息 表明我不知道代码中的哪一行导致了它 错误 警告 但是 代码运行良好并给了我结果 AppData Local Enthought Canop
  • Haskell Esqueleto 将列子集投影到自定义记录列表

    在所有的例子中我都看到了结果埃斯克莱托被投影到元组列表中或实体记录 例如 previousLogItems lt select from li gt do orderBy desc li LogItemId limit 10 return
  • 在我的 iOS 应用程序中使用 IOKit 会导致我的应用程序被拒绝吗?

    开发人员 正如提到的EricaIOKit是一个半私有框架 有人有在应用程序商店应用程序中使用它的经验吗 我想用它来获取 IMEI 和 ICCID 号码 如果您调用任何未记录的 Apple 框架 您的应用程序将被拒绝 因此 人们不太可能有在应
  • 如何处理 IE 8 中缺少 JavaScript Object.bind() 方法

    我正在编写一些 JavaScript 它使用Object bind method funcabc function x y z this myx x this playUB function w if this myx null do bl
  • 有谁知道协议缓冲区的 Ada 插件吗?

    我正在寻找用于协议缓冲区的 Ada 插件 看起来除了 Ada 之外 几乎所有语言插件都可用或正在开发中 嗯 我唯一发现的是这篇论文 不幸的是 我没有找到任何翻译工具的源代码 即你所说的plugin 我唯一能告诉的是该工具是用 C 开发的 U
  • 将向量的向量打印到 ostream

    请考虑以下代码 我正在尝试将向量的向量输出到 ostream include