替代c ++中的引用数组?

时间:2015-07-06 08:25:09

标签: c++

是否有任何替代引用数组,因为它在C ++中是不允许的? C ++标准8.3.2 / 4:

  

不应引用引用,不引用引用数组,也不引用引用指针。

编辑: 我正在编写两个类List<ObjectAttribute> objectAttributes = new List<ObjectAttribute>(); objectAttributes = new List<ObjectAttribute>(); objectAttributes = new List<ObjectAttribute>(); objectAttributes.Add(new ObjectAttribute(CKA.CKA_CLASS, CKO.CKO_PRIVATE_KEY)); objectAttributes.Add(new ObjectAttribute(CKA.CKA_KEY_TYPE, CKK.CKK_RSA)); CurrentSession.FindObjectsInit(objectAttributes); var oObjCollection = CurrentSession.FindObjects(1); if (oObjCollection.Count > 0) { oPrivKeyObjectHandle = oObjCollection[0]; } List<ObjectAttribute> privKeyAttributes = new List<ObjectAttribute>(); if (oPrivKeyObjectHandle != null) { List<CKA> privKeyAttrsToRead = new List<CKA>(); privKeyAttrsToRead.Add(CKA.CKA_LABEL); privKeyAttrsToRead.Add(CKA.CKA_ID); privKeyAttrsToRead.Add(CKA.CKA_VALUE); privKeyAttrsToRead.Add(CKA.CKA_VALUE_BITS); privKeyAttributes = CurrentSession.GetAttributeValue(oPrivKeyObjectHandle, privKeyAttrsToRead); } CurrentSession.FindObjectsFinal(); Cuboid来在OpenGL中绘制一个长方体。设置位置,长方体的大小,它将计算存储在SFML中Quad数组中的8个顶点位置。然后这些将在一个指针数组中传递,当你回答时,在四个sf::Vector3<>中绘制。所以我不想将8个顶点复制到24个顶点,因为在一个长方体中有6个面(Quad),每个面有4个顶点。我几乎没有使用指针。

3 个答案:

答案 0 :(得分:5)

您可以使用指针数组:

Foo *array[10]; // array of 10 Foo pointers

这很大程度上取决于你想做什么。

答案 1 :(得分:0)

你可以使用一个指针数组,甚至更好的var myApp = angular.module('AngStarter', []); myApp.directive("oblInLineEditor", function(){ return { restrict: "E", link: function(scope, elem, attrs) { console.log(elem[0].id); console.log(attrs.id) } } }); 智能指针

vector

答案 2 :(得分:0)

您可以使用标头std::reference_wrapper中声明的<functional>。 这是一个示范计划:

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

int main()
{
    int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    std::vector<std::reference_wrapper<int>> v( std::begin( a ), std::end( a ) );

    for ( int x : v ) std::cout << x << ' ';
    std::cout << std::endl;

    std::for_each( v.begin(), v.end(), []( auto &r ){ r.get() *= 2; } );

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;

    std::sort( v.begin(), v.end(), std::greater<int>() );

    for ( int x : v ) std::cout << x << ' ';
    std::cout << std::endl;

    for ( int x : a ) std::cout << x << ' ';
    std::cout << std::endl;
}

程序输出

1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
18 16 14 12 10 8 6 4 2 
2 4 6 8 10 12 14 16 18