C#的泛型LinkedList,在C++.net或VC.net里怎么使用?能不能给一个完整的例子?谢谢!

解决方案 »

  1.   

    没事去看MSDN...#using <System.dll>using namespace System;
    using namespace System::Text;
    using namespace System::Collections::Generic;void Display(LinkedList<String^>^ words)
    {
        for each( String^ word in words )
        {
            Console::Write(word + " ");
        }
        Console::WriteLine();
    };void DisplayNode(LinkedListNode<String^>^ node)
    {
        if (node->List == nullptr)
        {
            Console::WriteLine("Node \"{0}\" is not in a list.", 
                node->Value);
            return;
        }    StringBuilder^ result = gcnew StringBuilder("(" + node->Value + ")");
        LinkedListNode<String^>^ nodeP = node->Previous;    while (nodeP != nullptr)
        {
            result->Insert(0, nodeP->Value + " ");
            nodeP = nodeP->Previous;
        }    node = node->Next;
        while (node != nullptr)
        {
            result->Append(" " + node->Value);
            node = node->Next;
        }    Console::WriteLine(result);
    };void main()
    {
        array<String^>^ words = 
            {"the", "fox", "jumped", "over", "the", "dog"};
        LinkedList<String^>^ sentence = 
            gcnew LinkedList<String^>((IEnumerable<String^>^) words);
        Display(sentence);    Console::WriteLine("sentence->Contains(\"jumped\") = {0}", 
            sentence->Contains("jumped"));    // Add the word "today" to the beginning of the linked list.
        // Remove the new node, and add it to the end of the list.
        sentence->AddFirst("today");
        Display(sentence);    LinkedListNode<String^>^ 1 = sentence->First;
        sentence->RemoveFirst();
        sentence->AddLast(1);
        Display(sentence);    sentence->RemoveLast();
        sentence->AddLast("yesterday");
        Display(sentence);    1 = sentence->Last;
        sentence->RemoveLast();
        sentence->AddFirst(1);
        Display(sentence);    sentence->RemoveFirst();    LinkedListNode<String^>^ current = sentence->FindLast("the");
        DisplayNode(current);    sentence->AddAfter(current, "old");
        sentence->AddAfter(current, "lazy");
        DisplayNode(current);    current = sentence->Find("fox");
        DisplayNode(current);    sentence->AddBefore(current, "quick");
        sentence->AddBefore(current, "brown");
        DisplayNode(current);    // Keep a reference to the current node, "fox", and to the
        // previous node in the list. Use the Find method to locate
        // the node containing the value "dog". Show the position.
        1 = current;
        LinkedListNode<String^>^ 2 = current->Previous;
        current = sentence->Find("dog");
        DisplayNode(current);    // The AddBefore method throws an InvalidOperationException
        // if you try to add a node that already belongs to a list.
        try
        {
            sentence->AddBefore(current, 1);
        }
        catch(InvalidOperationException^ ex)
        {
            Console::WriteLine("Exception message: {0}", ex->Message);
        }    // Remove the node referred to by 1, and add it before 
        // the node referred to by current. Show the sentence, 
        // highlighting the position of the node referred to by
        // current.
        sentence->Remove(1);
        sentence->AddBefore(current, 1);
        DisplayNode(current);    // Remove the node referred to by current. If you try to show
        // its position now, the DisplayNode method prints a message.
        // Add the node after the node referred to by 2, and 
        // display the sentence, highlighting current.
        sentence->Remove(current);
        DisplayNode(current);
        sentence->AddAfter(2, current);
        DisplayNode(current);    // The Remove method finds and removes the first node that 
        // that has the specified value.
        sentence->Remove("old");
        Display(sentence);    // When the linked list is cast to ICollection(Of String),
        // the Add method adds a node to the end of the list. 
        sentence->RemoveLast();
        ICollection<String^>^ icoll = sentence;
        icoll->Add("rhinoceros");
        Display(sentence);    // Create an array with the same number of elements as the
        // linked list.
        Console::WriteLine("\nCopy the list to an array.");
        array<String^>^ sArray = gcnew array<String^>(sentence->Count);
        sentence->CopyTo(sArray, 0);    for each( String^ s in sArray )
        {
            Console::WriteLine(s);
        }    // Release all the nodes.
        sentence->Clear();
    }//This code example produces the following output:
    //
    //the fox jumped over the dog
    //sentence->Contains("jumped") = True
    //today the fox jumped over the dog
    //the fox jumped over the dog today
    //the fox jumped over the dog yesterday
    //yesterday the fox jumped over the dog
    //the fox jumped over (the) dog
    //the fox jumped over (the) lazy old dog
    //the (fox) jumped over the lazy old dog
    //the quick brown (fox) jumped over the lazy old dog
    //the quick brown fox jumped over the lazy old (dog)
    //Exception message: The LinkedList node belongs a LinkedList.
    //the quick brown jumped over the lazy old fox (dog)
    //Node "dog" is not in a list.
    //the quick brown (dog) jumped over the lazy old fox
    //the quick brown dog jumped over the lazy fox
    //the quick brown dog jumped over the lazy rhinoceros
    //
    //Copy the list to an array.
    //the
    //quick
    //brown
    //dog
    //jumped
    //over
    //the
    //lazy
    //rhinoceros
      

  2.   

    谢谢楼上现在想在DLL里使用泛型,就是把泛型作为DLL里函数的参数,怎么编写呀?总是报必须使用值类型或引用类型这样的DLL的调用方法和普通的DLL有区别吗?