我试图获得阵列"内部" if(isset($_GET['idstudent'], $_GET['idbook'])){
$_SESSION['link']=$_GET['idstudent'];
$_SESSION['link2']=$_GET['idbook'];
$sessionidstudent = $_SESSION['link'];
$sessionidbook = $_SESSION['link2']; }
$query = "
SELECT
*
FROM viewlibrary
WHERE
id = :sessionidstudent AND
serialno = :sessionidbook
";
$query_params = array(
':sessionidstudent' => $_SESSION['link'],
':sessionidbook' => $_SESSION['link2']
);
try
{
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
die("Failed to run query: " . $ex->getMessage());
}
$r=$stmt->fetch(PDO::FETCH_ASSOC); ?>
。
我不太了解C ++,所以基本上我正在寻找一个片段来获取数组(这是指向第一个元素的指针,iirc)和大小。我需要这个,因为我想通过 OpenACC 将数组的内容传输到加速器设备。
我从我应该操作的函数中获得的是两个RA-Iterator,用于数据的开头和结尾。
我知道并非所有这些都必须是连续的,但我生产的代码纯粹是学术性的,所以现在不应该成为一个问题。
答案 0 :(得分:4)
保证std::vector
在内存中是连续的,因此不应该成为问题。您可以使用
&*a.begin()
或更容易使用
&a.first()
要从.begin()
和.end()
获取尺寸,请使用
a.end() - a.begin()
答案 1 :(得分:2)
如果你想要整个矢量,vector.data()
是你的朋友。
如果您只需要其中的一部分:
std::vector<X>::iterator it1 = ... , it2 = ...;
X* item = &(*it1);
int elements = it2 - it1;
答案 2 :(得分:1)
myArray[myvector.end() - myvector.begin()]
for (std::vector<int>::iterator it = myvector.begin(), int i = 0; it!=myvector.end(); ++it, ++i)
myArray[i] = myvector[i]// or whatever you want
这是你使用迭代器的方法;确保使用循环,因为你有开始条件和结束条件。