打印 2D 数组矢量的最佳方法是什么
What is the optimal way of printing a 2d array vector
>我有一个函数,它从另一个类接收字符的 2D 向量并打印出来
void dat_Output::print_All(Board *board)
{
int x;
int y;
x = 0;
y = 0;
while(x < 26)
{
while(y < 59)
{
std::cout << board->get_Board()[x][y];
y++;
}
std::cout << std::endl;
y = 0;
x++;
}
}
这是 get_Board(( 函数
std::vector<std::vector<char> > Board::get_Board()
{
return(board);
}
我的问题是资源效率,我应该在打印函数开始时复制矢量以避免调用 get_Board(( 26*59 时间哪个更好? 资源消耗有什么区别?
-
如果
get_Board()
必须返回副本,请在循环之前制作单个副本(而不是 26 * 59 个副本(,并直接对其进行处理。它还将避免您board->
间接
。 如果可能,请返回 const 引用,而不是从
get_Board()
返回副本假设您要打印整个电路板,不要使用嵌套
while
循环,您可以使用嵌套for-range
循环并避免显式索引。
最小示例:
#include <iostream>
#include <vector>
class X
{
public :
X() : v({ { 'a', 'b'} , { 'a', 'b' } , { 'c', 'd' } }) {}
const std::vector<std::vector<char>> & GetVector() const { return v; }
private:
std::vector<std::vector<char> > v;
};
int main() {
X x;
const std::vector<std::vector<char> >& v = x.GetVector();
for(auto& v2 : v)
for(auto& c : v2)
std::cout << c << ' ';
}
void dat_Output::print_All(Board *board)
{
std::vector<std::vector<char> > myboard = board->get_Board()[x][y];
int x;
int y;
x = 0;
y = 0;
while(x < 26)
{
while(y < 59)
{
std::cout << myboard[x][y];
y++;
}
std::cout << std::endl;
y = 0;
x++;
}
}
我最初会创建一个副本。我认为每次调用 get_Board(( 时,您都会返回一个向量向量数组,这会影响性能,而调用一次会更便宜。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?