向量是一维数组:它包含可以使用整数索引访问的组件。在某些语言中,矢量的大小可以根据需要增大或缩小,以适应在创建Vector之后添加和删除项目。使用'vector-graphics'进行图形显示。
如何打印类型向量<tuple<string, int, int>>到屏幕C++?
假设我有 std::vector> tupleVector; tupleVector.push_back(std::tuple("乔", 2, 3)); tupleVector.push_back(std::tuple 假设我有 std::vector<std::tuple<string ,int ,int>> tupleVector; tupleVector.push_back(std::tuple<string ,int ,int>("Joe", 2, 3)); tupleVector.push_back(std::tuple<string ,int ,int>("Bob", 4, 5)); 如何迭代向量以打印包含元组的该向量的所有值? 只需迭代 vector,使用 tuple: 打印每个 cout 值 for (const auto& i : tupleVector) { cout << get<0>(i) << ", " << get<1>(i) << ", " << get<2>(i) << endl; } 您需要将问题分成两步。首先考虑如何仅打印元组,然后考虑如何打印向量。这是我的做法: std::ostream& operator<<(std::ostream& s, const std::tuple<std::string, int, int>& t) { s << "(" << std::get<0>(t) << "," << std::get<1>(t) << "," << std::get<2>(t) << ")"; return s; } std::ostream& operator<<(std::ostream& s, const std::vector<std::tuple< std::string, int, int> >& v) { s << "["; for (size_t idx = 0; idx < v.size(); idx++) { s << v[idx]; if (idx < v.size() - 1) { s << ","; } } s << "]"; return s; } int main() { std::vector<std::tuple<std::string, int, int> > v; v.emplace_back("hello", 3, 4); v.emplace_back("goodbye", 45, 67); std::cout << v << std::endl; return 0; } 此方法覆盖运算符<< for the tuple and the vector. Printing the vector will loop through the vector calling the operator<< for each tuple. 输出将是: [(hello,3,4),(goodbye,45,67)] 为了漂亮地打印任何项目(包括元组)的任何数组,就像这样。 注意:这个程序是用c++11编写的。 c++14 将使迭代元组变得更容易,而无需递归。 完全可编译的示例: #include <iostream> #include <tuple> #include <string> #include <vector> namespace detail { template<typename Stream> struct printer { printer(Stream& os) : _os ( os ) {} ~printer() { _os << " }"; } template<class X> void operator()(const X& x) { if (_first) { _os << "{ "; _first = false; } else { _os << ", "; } _os << x; } private: Stream& _os; bool _first = true; }; template<size_t index, size_t limit> struct print_loop { template<class Stream, class...Args> void operator()(detail::printer<Stream>&& print, const std::tuple<Args...>& tuple) const { print(std::get<index>(tuple)); print_loop<index+1, limit>()(std::forward<detail::printer<Stream>>(print), tuple); } }; template<size_t limit> struct print_loop<limit, limit> { template<class Stream, class...Args> void operator()(detail::printer<Stream>&& print, const std::tuple<Args...>& tuple) const { } }; } template<class Stream> detail::printer<Stream> make_printer(Stream& os) { return detail::printer<Stream>(os); } template<class Stream, class...Args> void print_elements(detail::printer<Stream>&& printer, const std::tuple<Args...>& tuple) { detail::print_loop<0, sizeof...(Args)>()(std::forward<detail::printer<Stream>>(printer), tuple); } template<class...Args> void tuple_print(std::ostream& os, const std::tuple<Args...>& tuple) { print_elements(make_printer(os), tuple); } template<class...Args> inline std::ostream& operator<<(std::ostream& os, const std::tuple<Args...>& tuple) { tuple_print(os, tuple); return os; } template<class T> inline std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) { auto print = make_printer(os); for(const auto& item : vec) { print(item); } } using namespace std; int main() { cout << "Hello World" << endl; auto x = make_tuple(string { "hello" }, 1, 2); cout << x << endl; auto y = vector<tuple<string, int, int>> { make_tuple(string { "hello" }, 3, 4), make_tuple(string { "world" }, 5, 6) }; cout << y << endl; return 0; } 示例输出: Hello World { hello, 1, 2 } { { hello, 3, 4 }, { world, 5, 6 } }
为什么Qt的SimpleTreeModel示例使用std::vector<std::unique_ptr<>>而不是简单的std::vector<>?
我在一个项目中使用Qt 6.5,并尝试重构/改进最初在Qt 5.10中编写的树模型。我花了一些时间查看 Qt 的 SimpleTreeModel 示例并成功使用了 co...
我参加了一项 C++ 评估,要求我找出在网格的每个方格上放置一块石头所需的移动次数。我想出了一个解决方案,但只成功了 40%。请帮助我...
如果我想要一个指向 int 向量向量中的元素的指针,我会写: 向量> a (5); int* p1 = a[4].data(); 但是,它不适用于 bool 向量的向量 (w...
我有两个向量,对于某些元素(不是全部),我需要将它们连接起来〜如果我删除/更改一个向量中的此元素,则应该在两个向量中删除/更改它。 类似于指针之类的东西...
哪种方法更快且开销更少? 方法一: 无效 foo() { std::vector< int > aVector; for ( int i = 0; i < 1000000; ++i ) { aVector.clear(); aVector.push_back( i...
为什么在 openMP 并行 for 循环中创建 C++ 向量会导致其速度显着减慢?
我试图在使用 openMP 的并行 for 循环内初始化 std::vector ,但这会导致它花费的时间比串行循环花费的时间要多得多。 这是一个例子...
我在 Rust 中的第一个项目是一个类似扑克的小型纸牌游戏,有五列,玩家可以在其中放入五张牌。Card 是一个结构体,可以从外部 API 获取其值和套件。登上o...
编辑://由于下面的答案,让它工作起来,添加当前正在工作的代码和测试用例,以防万一有人可能会发现它有用。 // 添加为谷物或内部食品的另一种类型...
如何在 Rust 中创建一个空的可变二维数组? 这是我到目前为止所尝试过的: 让 mut state[[u8 * 4] * 4]; 这会产生错误 错误:需要 `:`、`;`、`=` 或 `...
将 Vec<T> 映射到 Vec<K>,无需新的堆分配,其中 size(T) >= size(K)
我有两个结构体T和K,并且T的大小大于或等于K。假设如下: 结构体 T { k:K, t_val:u32, } 结构体K { k_val:u64, } 我想将 Vec 映射到 Vec 而无需...
我想创建一个 Azure 认知搜索来使用向量查询课程目录。我有一个名为 course_pd 的 pandas 数据框,它有两列,“内容”和“嵌入”,即嵌入...
我想实现一个动态数组,但我不想在扩展过程中发生数组复制。这可以吗? 一个想法是生成一个指针数组,每个指针都作为...
我有一个512x512x3的矩阵,存储512x512的三维向量。标准化所有这些向量的最佳方法是什么,以便我的结果是长度等于 1 的 512x512 向量? 在
我有两个 Azure Open AI Studio 实例。每个人都有一个聊天室。我创建了一个 Azure AI 搜索实例并向其添加了向量索引。 现在我正在向我的聊天添加数据。我选择 Azure AI 搜索作为...
我有一个原始指针,比如说, char * ptr = (char *) malloc(LIMIT); size_t 尺寸; fill_with_data(ptr, LIMIT, &size); 现在我想使用 std::vector 包装指针数据。 自动 v = v...
当一个类有一个向量作为它的数据成员时,为什么它的大小总是24? [重复]
这里是课程 A类{ 民众: 向量 vvv1{1}; }; B类{ 民众: 向量 vvv2{1,2,3,4,5}; }; 和主要功能 int main(){ A a;/*sizeof(a)==24;*/ ...
firestore 矢量保存“最好的选择是什么...”,匹配检索“foo”
要么是我设置错误,要么是我误解了矢量数据库。 我有这样一句话,“桌面上最好的选择是什么”,我将其嵌入以获得向量,然后节省下来......