zoukankan      html  css  js  c++  java
  • Span复习

    Span复习

    using System;
    
    namespace Span复习
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Console.WriteLine("Hello World!");
                //IntroSpans();
                //var span1 = IntroSpans();
    
                //CreatSlices(span1);
    
                int[] int1 = {3,5,2,6,4,5,2,4,6,8,};
                int[] int2 = {5,7,2,3,6,9,3};
                var span1 = new Span<int>(int1);
                var span2 = new Span<int>(int2);
                ChangeValues(span1,span2);
            }
    
            //使用Span<T>,可以直接访问数组元素。数组的元素没有复制,但是它们可以直接使用,这比复制要快。
            private static Span<int> IntroSpans()
            {
                int[] arr1 = new int[] {1,4,5,11,13,18};
                var span1 = new Span<int>(arr1);
                span1[1] = 11;
                System.Console.WriteLine($"arr1[1] is changed via span[1]: {arr1[1]}");
                System.Console.WriteLine($"span1[1]: {span1[1]}");
                return span1;
    
            }
    
            //创建切片
            private static void CreatSlices(Span<int> span1)
            {
                System.Console.WriteLine(nameof(CreatSlices));
                int[] arr2 = {3,5,7,9,11,13,15};
                //var span2 = new Span<int>(arr2);
                var span3 = new Span<int>(arr2,start:3,length:3);
                var span4 = span1.Slice(start:2,length:4);
    
                DisplaySpan("Content of span3:",span3);
                DisplaySpan("Content of span4:" ,span4);
                System.Console.WriteLine();
            
    
    
            }
    
            //DisplaySpan()用于显示Span的内容
            private static void DisplaySpan(string title,ReadOnlySpan<int> span)
            {
                System.Console.WriteLine(title);
                for(int i = 0;i<span.Length;i++)
                {
                    System.Console.Write($"{span[i]} ");
    
                }
                System.Console.WriteLine();
    
            }
    
            //使用Span改变值
            private static void ChangeValues(Span<int> span1,Span<int> span2)
            {
                System.Console.WriteLine(nameof(ChangeValues));
                var span4 = span1.Slice(start:4);
                span4.Clear();//清除了span1从第5位开始后面的数,并用数0填充
                DisplaySpan("content of span1",span1);
                var span5 = span2.Slice(start:3,length:3);
                span5.Fill(42);//span2从第4位开始的三位,用数42来填充
                DisplaySpan("content of span2",span2);
                span5.CopyTo(span1);
                DisplaySpan("content of span1",span1);
                if(!span1.TryCopyTo(span4))
                {
                    System.Console.WriteLine("Couldn't copy span1 to span4 because span4 is to small ");
                    System.Console.WriteLine($"length of span1: {span1.Length},length of span4: {span4.Length} ");
    
                }
                System.Console.WriteLine();
    
            }
        }
    }

    使用Span改变值事例输出如下

    ChangeValues
    content of span1
    3 5 2 6 0 0 0 0 0 0
    content of span2
    5 7 2 42 42 42 3
    content of span1
    42 42 42 6 0 0 0 0 0 0
    Couldn't copy span1 to span4 because span4 is to small
    length of span1: 10,length of span4: 6
  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/singhwong/p/11937036.html
Copyright © 2011-2022 走看看