- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一个数组 A[n][m]
,我想读取或写入 A
的行/列。
如果我想访问矩阵的第三行,我该如何引用它
A[3][:]
在不使用循环的情况下,这在 C++ 中是否可行?
最佳答案
不,C++ 没有类似于 Fortran 中的 [:]
的运算符。根据您是以行优先顺序还是以列优先顺序存储内容,这可以通过类似的方式完成。
首先,数组在 C++ 中并不是真正的一等公民。使用 std::array
(对于小的 M、N
,因为它们是堆栈分配的)或 std::vector
工作要容易得多.
假设我们使用的是 std::vector
:
template <typename T>
using matrix<T> = std::vector<std::vector<T>>;
matrix<int> m = {{1,2,3}, {4,5,6}, {7,8,9}};
要从中得到一行,我们可以简单地使用operator[]
:
auto& row = m[0]; // Returns a std::vector<int>& containing {1, 2, 3}
获取行主要顺序的列更加困难。如果您需要更复杂的操作,使用矩阵库(如 Eigen)可能是更好的方法。
编辑:如果你想用零填充整行,这可以通过对结果使用 std::fill
轻松完成:
//m defined as before
std::fill(std::begin(m[0]), std::end(m[0]), 0);
请注意,这仍然(显然)与行的大小成线性关系。这也可以很容易地包装在一个函数中:
template <typename T>
void clear_row(matrix<T>& m, std::size_t row, const T& new_value)
{
std::fill(std::begin(m[row]), std::end(m[row]), new_value);
}
如果您想用一组不同的值替换一行中的所有值,您可以使用迭代器:
template <typename T, typename Iterator>
void modify_row(matrix<T>& m, std::size_t row, Iterator new_start)
{
std::copy(std::begin(m[row]), std::end(m[row]), new_start);
}
关于c++ - C++有没有类似于Fortran的冒号A[2][:]?的数组占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20961673/
我的 DateTime 对象使用 DateTime.Now 分配了本地时间。我想知道一旦夏令时开始/结束,这个对象是否会给出正确的当前本地时间。或者我需要解决方法吗? 最佳答案 是的,DateTime
假设我需要“特定类别中可用的项目数量”与“所有项目的数量”的比率。请考虑这样的 MySQL 表: /* mysql> select * from Item; +----+------------+--
我有这张 table http://codepen.io/MetCastle/pen/lxceL我想使用 jQuery 根据 input type="number" 隐藏/显示列。表示整个列: Pro
想要制作一个看起来像这样的网格,其中 div/section 以百分比表示。 margin 在任何地方都是一样的。 http://www.ladda-upp.se/bilder/giefekcmgwm
这将返回 1(又名 TRUE) SELECT DATE_SUB(NOW(), INTERVAL 24*100 HOUR) = DATE_SUB(NOW(), INTERVAL 100 DAY); 10
我一直在尝试在 UIScrollView 中获取 UIView 的转换后的 CGRect。如果我不放大它就可以正常工作,但是一旦我放大,新的 CGRect 就会发生变化。这是让我接近的代码: CGFl
对于家庭作业,我需要在不使用内置模 (%) 运算符的情况下返回 num1 除以 num2 后的余数。我能够通过以下代码让大多数测试通过,但我仍然坚持如何解释给定数字的 -/+ 符号。我需要保留 num
我用 Javascript 创建了一个倒数计时器;它是成功的,期望未完成。事实上,从数学上讲,它是正确的,但是谷歌浏览器的浏览器设置“暂停”(因为没有更好的术语)SetInterval/Timeout
我有两个 的,每个都设置为其容器宽度的 45%。有没有办法使 居中?使得它们在容器的左右两侧有相同的空间,并且它们之间也有空间。 一开始我只是做了每个 50% 并且有 padding: 0px 2
我是一名优秀的程序员,十分优秀!