Another trick is to use the CPixelView class from the FastLED library. It allows you to "break" a single physical LED strip into multiple logical strips. The library handles the index offsets for you.
Let say you have 25 LEDs total and want the first logical strip to access physical LEDs 0-5 and the second logical strip to access physical LEDs 6-24:
#include <Arduino.h>
#include <FastLED.h>
const uint8_t ledCount = 25;
const uint8_t startGroup0 = 0;
const uint8_t lengthGroup0 = 6;
const uint8_t startGroup1 = 6;
const uint8_t lengthGroup1 = 19;
const uint8_t ledPin = 3;
CRGB leds[ledCount];
CPixelView<CRGB> group0(leds, startGroup0, lengthGroup0);
CPixelView<CRGB> group1(leds, startGroup1, lengthGroup1);
void setup() {
FastLED.addLeds<WS2812, ledPin, RGB>(leds, ledCount);
}
So then, you'd update the first group using group0[0] - group0[5] and update the second group using group1[0] - group1[18]. Again, the library will take care of offsetting into the full 'leds' array for you.
After updating all your patterns, FastLED.show() actually writes the new data (i.e. colors) to the entire physical strip at one time.