BitsetsNET.RoaringArray.ReplaceKeyAndContainerAtIndex C# (CSharp) Метод

ReplaceKeyAndContainerAtIndex() публичный Метод

Replaces the key and container value at a given index.
public ReplaceKeyAndContainerAtIndex ( int i, ushort key, Container c ) : void
i int the working index
key ushort key to set
c Container container to set
Результат void
        public void ReplaceKeyAndContainerAtIndex(int i, ushort key, Container c)
        {
            keys[i] = key;
            values[i] = c;
        }

Usage Example

Пример #1
0
        /// <summary>
        /// Finds members of this bitset that are not in the other set (ANDNOT).
        /// Modifies current bitset in place.
        /// </summary>
        /// <param name="otherSet">The set to compare against</param>
        public void IAndNot(RoaringBitset otherSet)
        {
            int pos1 = 0, pos2 = 0, intersectionSize = 0;
            int thisSize     = containers.Size;
            int otherSetSize = otherSet.containers.Size;

            while (pos1 < thisSize && pos2 < otherSetSize)
            {
                ushort s1 = containers.GetKeyAtIndex(pos1);
                ushort s2 = otherSet.containers.GetKeyAtIndex(pos2);
                if (s1 == s2)
                {
                    Container c1 = containers.GetContainerAtIndex(pos1);
                    Container c2 = otherSet.containers.GetContainerAtIndex(pos2);
                    Container c  = c1.IAndNot(c2);
                    if (c.GetCardinality() > 0)
                    {
                        containers.ReplaceKeyAndContainerAtIndex(intersectionSize++, s1, c);
                    }
                    ++pos1;
                    ++pos2;
                }
                else if (Utility.CompareUnsigned(s1, s2) < 0)
                { // s1 < s2
                    if (pos1 != intersectionSize)
                    {
                        Container c1 = containers.GetContainerAtIndex(pos1);
                        containers.ReplaceKeyAndContainerAtIndex(intersectionSize, s1, c1);
                    }
                    ++intersectionSize;
                    ++pos1;
                }
                else
                { // s1 > s2
                    pos2 = otherSet.containers.AdvanceUntil(s1, pos2);
                }
            }
            if (pos1 < thisSize)
            {
                containers.CopyRange(pos1, thisSize, intersectionSize);
                intersectionSize += thisSize - pos1;
            }
            containers.Resize(intersectionSize);
        }
All Usage Examples Of BitsetsNET.RoaringArray::ReplaceKeyAndContainerAtIndex